SlideShare ist ein Scribd-Unternehmen logo
1 von 66
Downloaden Sie, um offline zu lesen
Spezialist für modellbasierte Entwicklungsverfahren


Gründung im Jahr 2003

Niederlassungen in Deutschland, Frankreich,
Schweiz und Kanada

140 Mitarbeiter


Strategisches Mitglied der Eclipse Foundation


Intensive Verzahnung im Bereich der Forschung


Mitglied von ARTEMISIA


Embedded Software Development


Enterprise Application Development
Von und mit Thorsten Kamann
                   22.02.2010
-
    jUnit 3 Klassen




    Commons Attributes




    Struts 1.x Support
100%
   API



            Spring
              3
  95%
Extension
 Points
Modules     OSGi




          Enterprise
Maven
          Repository
#{...}                @Value


         Expression
         Language


XML             ExpressionParser
<bean class=“MyDatabase"> !
     !<property name="databaseName" !
     !   value="#{systemProperties.databaseName}"/> !
     !<property name="keyGenerator" !
     !   value="#{strategyBean.databaseKeyGenerator}"/> !
</bean> !
@Repository !
public class MyDatabase { !
     !@Value("#{systemProperties.databaseName}") !
     !public void setDatabaseName(String dbName) {…} !

      !@Value("#{strategyBean.databaseKeyGenerator}") !
      !public void setKeyGenerator(KeyGenerator kg) {…} !
} !
Database db = new MyDataBase(„myDb“, „uid“, „pwd“);!

ExpressionParser parser = new SpelExpressionParser();!
Expression exp = parser.parseExpression("name");!

EvaluationContext context = new    !     !     !

     !     !     !     !StandardEvaluationContext();!
context.setRootObject(db);!

String name = (String) exp.getValue(context);!
Database db = new MyDataBase(„myDb“, „uid“, „pwd“);!

ExpressionParser parser = new SpelExpressionParser();!
Expression exp = parser.parseExpression("name");!

String name = (String) exp.getValue(db);!
@Configuration       @Bean            @DependsOn




  @Primary           @Lazy             @Import




        @ImportResource      @Value
@Configuration!
public class AppConfig {!
     !@Value("#{jdbcProperties.url}") !
     !private String jdbcUrl;!
     !!
     !@Value("#{jdbcProperties.username}") !
     !private String username;!

     !@Value("#{jdbcProperties.password}") !
     !private String password;!
}!
@Configuration!
public class AppConfig {!
     !@Bean!
     !public FooService fooService() {!
         return new FooServiceImpl(fooRepository());!
     !}!

     !@Bean!
     !public DataSource dataSource() { !
         return new DriverManagerDataSource(!
     !      !jdbcUrl, username, password);!
     !}!

}!
@Configuration!
public class AppConfig {!
     !@Bean!
     !public FooRepository fooRepository() {!
        return new HibernateFooRepository!     !     !

     !     !     !     !     !(sessionFactory());!
    }!

     @Bean!
     public SessionFactory sessionFactory() {!
      !...!
     }!
}!
<context:component-scan !
     !base-package="org.example.config"/>


<util:properties id="jdbcProperties" 

     !     !location="classpath:jdbc.properties"/>!
public static void main(String[] args) {!
    ApplicationContext ctx = !
     !new AnnotationConfigApplicationContext(!
     !     !     !     !     !     !AppConfig.class);!
    FooService fooService = ctx.getBean(!
     !     !     !     !     !     !FooService.class);!
    fooService.doStuff();!
}!
Marshalling      Unmarshalling



JAXB   Castor   JiBX   Xstream   XMLBeans
<oxm:jaxb2-marshaller !
     !id="marshaller" !
     !contextPath=“my.packages.schema"/>!



<oxm:jaxb2-marshaller id="marshaller">!
    <oxm:class-to-be-bound name=“Customer"/>!
    <oxm:class-to-be-bound name=„Address"/>!
    ...!
</oxm:jaxb2-marshaller>!
<beans>!
    <bean id="castorMarshaller"             !
     !class="org.springframework.oxm.castor.CastorMarshaller" >!
       <property name="mappingLocation" 

     !      !value="classpath:mapping.xml" />!
    </bean>!
</beans>

<oxm:xmlbeans-marshaller !
     !id="marshaller“!
     !options=„XMLOptionsFactoryBean“/>!
<oxm:jibx-marshaller !
     !id="marshaller" !
     !target-class=“mypackage.Customer"/>!
<beans>!

    <bean id="xstreamMarshaller"
     !class="org.springframework.oxm.xstream.XStreamMarshaller">!
      <property name="aliases">!
         <props>!
             <prop key=“Customer">mypackage.Customer</prop>!
         </props>!
     !</property>!
    </bean>!
    ...!

</beans>!
Spring MVC

@Controller   @RequestMapping   @PathVariable
@Controller

    The C of MVC

  <context:component-
        scan/>

  Mapping to an URI
     (optional)
@RequestMapping

   Mapping a Controller
   or Methods to an URI


       URI-Pattern


   Mapping to a HTTP-
        Method

       Works with
      @PathVariable
@Controller!
@RequestMapping(„/customer“)!
public class CustomerController{!

     !@RequestMapping(method=RequestMethod.GET)!
     !public List<Customer> list(){!
     !     !return customerList;!
     !}!
}!
@Controller!
@RequestMapping(„/customer“)!
public class CustomerController{!

     !@RequestMapping(value=„/list“,!
     !     !     !     !     !method=RequestMethod.GET)!
     !public List<Customer> list(){!
     !     !return customerList;!
     !}!
}!
@Controller!
@RequestMapping(„/customer“)!
public class CustomerController{!

     !@RequestMapping(value=„/show/{customerId}“,!
     !     !     !     !     !method=RequestMethod.GET)!
     !public Customer show(!
     !    @PathVariable(„customerId“) long customerId){!
     !     !return customer;!
     !}!
}!
@Controller!
@RequestMapping(„/customer“)!
public class CustomerController{!

     !@RequestMapping(!
     !     !value=„/show/{customerId}/edit/{addressId}“,!
     !     !     !     !     !method=RequestMethod.GET)!
     !public String editAddressDetails(!
     !    @PathVariable(„customerId“) long customerId,!
     !    @PathVariable(„addressId“) long addressId){!
     !     !return „redirect:...“;!
     !}!
}!
RestTemplate

Delete   Get   Head   Options   Post   Put
Host              localhost:8080!
Accept            text/html, application/xml;q=0.9!
Accept-Language   fr,en-gb;q=0.7,en;q=0.3!
Accept-Encoding   gzip,deflate!
Accept-Charset    ISO-8859-1,utf-8;q=0.7,*;q=0.7!
Keep-Alive        300!



public void displayHeaderInfo(!
     @RequestHeader("Accept-Encoding") String encoding,!
     @RequestHeader("Keep-Alive") long keepAlive) {!

     !...!

}!
public class VistorForm(!
     !@NotNull!
     !@Size(max=40)!
     !private String name;!




                                                 JSR-303
     !@Min(18)!
     !private int age;!
}!



<bean id="validator" !
     !class=“...LocalValidatorFactoryBean" />!
HSQL   H2   Derby   ...
<jdbc:embedded-database id="dataSource">!
      <jdbc:script location="classpath:schema.sql"/>!
      <jdbc:script location="classpath:test-data.sql"/>!
</jdbc:embedded-database>!



EmbeddedDatabaseBuilder builder = new    !     !

     !     !     !     !EmbeddedDatabaseBuilder();!
EmbeddedDatabase db = builder.setType(H2)!
     !     !     !     !.addScript(“schema.sql")!
     !     !     !     !.addScript(„test-data.sql")!
     !     !     !     !.build();!
//Do somethings: db extends DataSource!
db.shutdown();!
public class DataBaseTest {!
    private EmbeddedDatabase db;!

     @Before!
     public void setUp() {!
      !db = new EmbeddedDatabaseBuilder()!
      !     !.addDefaultScripts().build();!    !!
     }!

     @Test!
     public void testDataAccess() {!
         JdbcTemplate template = new JdbcTemplate(db);!
         template.query(...);!
     }!

     @After!
     public void tearDown() {!
         db.shutdown();!
     }!
}!
@Async (out
of EJB 3.1)



  JSR-303




  JSF 2.0




   JPA 2
Spring Application Tools




                                                     OSGi




                                                                                     Flexible Deployments
                           •  Spring project, bean          •  OSGi bundle                                  •  Support for all the
                              and XML file                     overview and visual                             most common Java
                              wizards                          dependency graph                                EE application
                           •  Graphical Spring              •  Classpath                                       servers
                              configuration editor             management based                             •  Advanced support
                           •  Spring 3.0 support               on OSGi meta data                               for SpringSource
                              including                     •  Automatic                                       dm Server
                              @Configuration                   generation of                                •  Advanced support
                              and @Bean styles                 manifest                                        for SpringSource tc
                           •  Spring Web Flow                  dependency meta                                 Server
                              and Spring Batch                 data                                         •  Cloud Foundry
                              visual development            •  SpringSource                                    targeting for dm
                              tools                            Enterprise Bundle                               Server and tc Server
                           •  Spring Roo project               Repository browser                           •  VMware Lab
                              wizard and                    •  Manifest file                                   Manager and
                              development shell                validation and best                             Workstation
                           •  Spring Application               practice                                        integration and
                              blue prints and best             recommendations                                 deployment
                              practice validation
Grails for   Spring Best   AOP-
  Java        Practices    driven

                      Nice
      Test-driven
                     Console
@Roo*
Command                      AspectJ
             Annotations
Line Shell                  Intertype     Metadata   RoundTrip
              (Source-
                           Declarations
               Level)
roo> project --topLevelPackage com.tenminutes
roo> persistence setup --provider HIBERNATE
                  --database HYPERSONIC_IN_MEMORY
roo> entity --class ~.Timer --testAutomatically
roo> field string --fieldName message --notNull
roo> controller all --package ~.web
roo> selenium test --controller ~.web.TimerController
roo> perform tests
roo> perform package
roo> perform eclipse
roo> quit
$ mvn tomcat:run
Roo for     Best      Groovy-
Groovy    Practices    driven

       Test-     Nice
      driven    Console
Have your next Web 2.0      Get instant feedback,   Powered by Spring,
project done in weeks       See instant results.    Grails out performs the
instead of months.          Grails is the premier   competition. Dynamic,
Grails delivers a new       dynamic language        agile web development
age of Java web             web framework for the   without compromises.
application productivity.   JVM.



Rapid                       Dynamic                 Robust
Support
                                    Grails Project
Project Wizard   different Grails
                                     Converter
                     Versions

                                      Grails
                  Full Groovy
Grails Tooling                       Command
                    Support
                                      Prompt
CTRL+ALT+G (or CMD+ALT+G on Macs)
>grails create-app tenminutes-grails!
<grails create-domain-class tenminutes.domain.Timer!

Timer.groovy:!
class Timer {!
      !String message!
      !static constraints = {!
      !      !message(nullable: false)!
      !}!
}!

>grails create-controller tenminutes.web.TimerController!

TimerController.groovy:!
class TimerControllerController {!
      !def scaffold = Timer!
}!

>grails run-app!
•  http://www.springframework.org/
Spring     •  http://www.springsource.com/



Grails &   •  http://www.grails.org/
           •  http://groovy.codehaus.org/
Groovy
           •  http://www.thorsten-kamann.de
 Extras    •  http://www.itemis.de
Erfolg durch Agilität: Scrum-          Von »Exzellenten
Kompakt mit Joseph Pelrine –     Wissensorganisationen« lernen
       14:00 bis 18:00                 – 13:00 bis 18:30
      25. Februar 2010                 25. Februar 2010
    Joseph Pelrine, Jena,         Lise-Meitner-Allee 6, 44801
   Veranstalter: itemis AG        Bochum, Veranstalter: ck 2



                                    Hands On Model-Based
Embedded World 2010 – Halle       Development with Eclipse –
      10 – Stand 529                     09:30 bis 16:30
     02.-04. März 2010                   04. März 2010
 Nürnberg - Messezentrum 1        Axel Terfloth, Andreas Unger,
                                   embeddedworld Nürnberg



                  Zukunft der Wissensarbeit.
                 Best Practice Sharing auf der
                 CeBIT 2010 – 10:00 bis 13:00
                        04. März 2010
                Exzellente Wissensorganisation,
                 Hannover, Veranstalter: ck 2,
                           kostenlos

Weitere ähnliche Inhalte

Was ist angesagt?

Running your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudRunning your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudArun Gupta
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010arif44
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with SpringJoshua Long
 
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012Arun Gupta
 
JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the Cloud
JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the CloudJavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the Cloud
JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the CloudAaron Walker
 
Professional Frontend Engineering
Professional Frontend EngineeringProfessional Frontend Engineering
Professional Frontend EngineeringNate Koechley
 
MVC on the server and on the client
MVC on the server and on the clientMVC on the server and on the client
MVC on the server and on the clientSebastiano Armeli
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011Arun Gupta
 
Java Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsJava Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsIMC Institute
 
Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Arun Gupta
 
Ruby On Rails Tutorial
Ruby On Rails TutorialRuby On Rails Tutorial
Ruby On Rails Tutorialsunniboy
 
Building and managing java projects with maven part-III
Building and managing java projects with maven part-IIIBuilding and managing java projects with maven part-III
Building and managing java projects with maven part-IIIprinceirfancivil
 
Spring MVC
Spring MVCSpring MVC
Spring MVCyuvalb
 
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.Dacartec Servicios Informáticos
 

Was ist angesagt? (19)

Running your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudRunning your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the Cloud
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
 
Struts N E W
Struts N E WStruts N E W
Struts N E W
 
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
 
JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the Cloud
JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the CloudJavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the Cloud
JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the Cloud
 
Professional Frontend Engineering
Professional Frontend EngineeringProfessional Frontend Engineering
Professional Frontend Engineering
 
MVC on the server and on the client
MVC on the server and on the clientMVC on the server and on the client
MVC on the server and on the client
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011
 
Lo nuevo en Spring 3.0
Lo nuevo  en Spring 3.0Lo nuevo  en Spring 3.0
Lo nuevo en Spring 3.0
 
Java Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsJava Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom Tags
 
Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0
 
J2EE jsp_01
J2EE jsp_01J2EE jsp_01
J2EE jsp_01
 
Ruby On Rails Tutorial
Ruby On Rails TutorialRuby On Rails Tutorial
Ruby On Rails Tutorial
 
Building and managing java projects with maven part-III
Building and managing java projects with maven part-IIIBuilding and managing java projects with maven part-III
Building and managing java projects with maven part-III
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
wee
weewee
wee
 
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.
 
Advanced Visualforce Webinar
Advanced Visualforce WebinarAdvanced Visualforce Webinar
Advanced Visualforce Webinar
 

Andere mochten auch

Andere mochten auch (20)

Empowerment Movie Ppt Version Sample
Empowerment Movie Ppt Version SampleEmpowerment Movie Ppt Version Sample
Empowerment Movie Ppt Version Sample
 
書く技術
書く技術書く技術
書く技術
 
Kõnepuue
KõnepuueKõnepuue
Kõnepuue
 
クロスブラウザ拡張ライブラリExtension.js
クロスブラウザ拡張ライブラリExtension.js クロスブラウザ拡張ライブラリExtension.js
クロスブラウザ拡張ライブラリExtension.js
 
Lande, Jigalo
Lande, JigaloLande, Jigalo
Lande, Jigalo
 
Drumetie predeal 08 01 2011
Drumetie predeal 08 01 2011Drumetie predeal 08 01 2011
Drumetie predeal 08 01 2011
 
Recent PCI Hacks
Recent PCI HacksRecent PCI Hacks
Recent PCI Hacks
 
Intro Webct
Intro WebctIntro Webct
Intro Webct
 
Nieuwe Marketing En Communicatieconcepten Arnhem November 2007
Nieuwe Marketing En Communicatieconcepten Arnhem November 2007Nieuwe Marketing En Communicatieconcepten Arnhem November 2007
Nieuwe Marketing En Communicatieconcepten Arnhem November 2007
 
態度
態度態度
態度
 
Hire the right way
Hire the right wayHire the right way
Hire the right way
 
Wilsonlo.Ppt
Wilsonlo.PptWilsonlo.Ppt
Wilsonlo.Ppt
 
Metodika MV ČR PRINCeGON
Metodika MV ČR PRINCeGONMetodika MV ČR PRINCeGON
Metodika MV ČR PRINCeGON
 
Open Source Bridge Opening Day
Open Source Bridge Opening DayOpen Source Bridge Opening Day
Open Source Bridge Opening Day
 
Jax2010 adobe lcds
Jax2010 adobe lcdsJax2010 adobe lcds
Jax2010 adobe lcds
 
日出日落
日出日落日出日落
日出日落
 
2. open innov whatisit
2. open innov whatisit2. open innov whatisit
2. open innov whatisit
 
朱家故事chu's family
朱家故事chu's family朱家故事chu's family
朱家故事chu's family
 
Mathematics Of Life
Mathematics Of LifeMathematics Of Life
Mathematics Of Life
 
Making Sense of Lecture Capture: A Case Study of Peer and Teacher Influence
Making Sense of Lecture Capture: A Case Study of Peer and Teacher InfluenceMaking Sense of Lecture Capture: A Case Study of Peer and Teacher Influence
Making Sense of Lecture Capture: A Case Study of Peer and Teacher Influence
 

Ähnlich wie Modellbasierte Entwicklungsverfahren Spezialist

Enterprise Java Web Application Frameworks Sample Stack Implementation
Enterprise Java Web Application Frameworks   Sample Stack ImplementationEnterprise Java Web Application Frameworks   Sample Stack Implementation
Enterprise Java Web Application Frameworks Sample Stack ImplementationMert Çalışkan
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesAlfresco Software
 
Learning to run
Learning to runLearning to run
Learning to rundominion
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...J V
 
MongoDB Munich 2012: MongoDB for official documents in Bavaria
MongoDB Munich 2012: MongoDB for official documents in BavariaMongoDB Munich 2012: MongoDB for official documents in Bavaria
MongoDB Munich 2012: MongoDB for official documents in BavariaMongoDB
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformAntonio Peric-Mazar
 
PLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring SurfPLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring SurfAlfresco Software
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking TourJoshua Long
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfAlfresco Software
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfAlfresco Software
 
Django Overview
Django OverviewDjango Overview
Django OverviewBrian Tol
 
Learning To Run - XPages for Lotus Notes Client Developers
Learning To Run - XPages for Lotus Notes Client DevelopersLearning To Run - XPages for Lotus Notes Client Developers
Learning To Run - XPages for Lotus Notes Client DevelopersKathy Brown
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep DiveGabriel Walt
 
Replacing Oracle with MongoDB for a templating application at the Bavarian go...
Replacing Oracle with MongoDB for a templating application at the Bavarian go...Replacing Oracle with MongoDB for a templating application at the Bavarian go...
Replacing Oracle with MongoDB for a templating application at the Bavarian go...Comsysto Reply GmbH
 
Solid And Sustainable Development in Scala
Solid And Sustainable Development in ScalaSolid And Sustainable Development in Scala
Solid And Sustainable Development in ScalaKazuhiro Sera
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Gunith Devasurendra
 
FOXX - a Javascript application framework on top of ArangoDB
FOXX - a Javascript application framework on top of ArangoDBFOXX - a Javascript application framework on top of ArangoDB
FOXX - a Javascript application framework on top of ArangoDBArangoDB Database
 
Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platformAlfresco Software
 

Ähnlich wie Modellbasierte Entwicklungsverfahren Spezialist (20)

Enterprise Java Web Application Frameworks Sample Stack Implementation
Enterprise Java Web Application Frameworks   Sample Stack ImplementationEnterprise Java Web Application Frameworks   Sample Stack Implementation
Enterprise Java Web Application Frameworks Sample Stack Implementation
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best Practices
 
Learning to run
Learning to runLearning to run
Learning to run
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
 
MongoDB Munich 2012: MongoDB for official documents in Bavaria
MongoDB Munich 2012: MongoDB for official documents in BavariaMongoDB Munich 2012: MongoDB for official documents in Bavaria
MongoDB Munich 2012: MongoDB for official documents in Bavaria
 
REST easy with API Platform
REST easy with API PlatformREST easy with API Platform
REST easy with API Platform
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API Platform
 
PLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring SurfPLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring Surf
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
 
Django Overview
Django OverviewDjango Overview
Django Overview
 
Learning To Run - XPages for Lotus Notes Client Developers
Learning To Run - XPages for Lotus Notes Client DevelopersLearning To Run - XPages for Lotus Notes Client Developers
Learning To Run - XPages for Lotus Notes Client Developers
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
 
Replacing Oracle with MongoDB for a templating application at the Bavarian go...
Replacing Oracle with MongoDB for a templating application at the Bavarian go...Replacing Oracle with MongoDB for a templating application at the Bavarian go...
Replacing Oracle with MongoDB for a templating application at the Bavarian go...
 
Solid And Sustainable Development in Scala
Solid And Sustainable Development in ScalaSolid And Sustainable Development in Scala
Solid And Sustainable Development in Scala
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
 
FOXX - a Javascript application framework on top of ArangoDB
FOXX - a Javascript application framework on top of ArangoDBFOXX - a Javascript application framework on top of ArangoDB
FOXX - a Javascript application framework on top of ArangoDB
 
Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platform
 

Mehr von Thorsten Kamann

Scrum and distributed teams
Scrum and distributed teamsScrum and distributed teams
Scrum and distributed teamsThorsten Kamann
 
Effizente Entwicklung für verteilte Projekte
Effizente Entwicklung für verteilte ProjekteEffizente Entwicklung für verteilte Projekte
Effizente Entwicklung für verteilte ProjekteThorsten Kamann
 
My Daily Spring - Best Practices with the Springframework
My Daily Spring - Best Practices with the SpringframeworkMy Daily Spring - Best Practices with the Springframework
My Daily Spring - Best Practices with the SpringframeworkThorsten Kamann
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsThorsten Kamann
 
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyLeichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyThorsten Kamann
 
Let’s groove with Groovy
Let’s groove with GroovyLet’s groove with Groovy
Let’s groove with GroovyThorsten Kamann
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyLeichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyThorsten Kamann
 

Mehr von Thorsten Kamann (12)

Scrum on rails
Scrum on railsScrum on rails
Scrum on rails
 
Scrum and distributed teams
Scrum and distributed teamsScrum and distributed teams
Scrum and distributed teams
 
Effizente Entwicklung für verteilte Projekte
Effizente Entwicklung für verteilte ProjekteEffizente Entwicklung für verteilte Projekte
Effizente Entwicklung für verteilte Projekte
 
My Daily Spring - Best Practices with the Springframework
My Daily Spring - Best Practices with the SpringframeworkMy Daily Spring - Best Practices with the Springframework
My Daily Spring - Best Practices with the Springframework
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyLeichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
 
Let’s groove with Groovy
Let’s groove with GroovyLet’s groove with Groovy
Let’s groove with Groovy
 
Groovy - Rocks or Not?
Groovy - Rocks or Not?Groovy - Rocks or Not?
Groovy - Rocks or Not?
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
Spring 2.0
Spring 2.0Spring 2.0
Spring 2.0
 
Spring 2.0
Spring 2.0Spring 2.0
Spring 2.0
 
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und GroovyLeichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
 

Kürzlich hochgeladen

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Kürzlich hochgeladen (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Modellbasierte Entwicklungsverfahren Spezialist

  • 1.
  • 2. Spezialist für modellbasierte Entwicklungsverfahren Gründung im Jahr 2003 Niederlassungen in Deutschland, Frankreich, Schweiz und Kanada 140 Mitarbeiter Strategisches Mitglied der Eclipse Foundation Intensive Verzahnung im Bereich der Forschung Mitglied von ARTEMISIA Embedded Software Development Enterprise Application Development
  • 3.
  • 4. Von und mit Thorsten Kamann 22.02.2010
  • 5.
  • 6.
  • 7. - jUnit 3 Klassen Commons Attributes Struts 1.x Support
  • 8. 100% API Spring 3 95% Extension Points
  • 9. Modules OSGi Enterprise Maven Repository
  • 10. #{...} @Value Expression Language XML ExpressionParser
  • 11. <bean class=“MyDatabase"> ! !<property name="databaseName" ! ! value="#{systemProperties.databaseName}"/> ! !<property name="keyGenerator" ! ! value="#{strategyBean.databaseKeyGenerator}"/> ! </bean> !
  • 12. @Repository ! public class MyDatabase { ! !@Value("#{systemProperties.databaseName}") ! !public void setDatabaseName(String dbName) {…} ! !@Value("#{strategyBean.databaseKeyGenerator}") ! !public void setKeyGenerator(KeyGenerator kg) {…} ! } !
  • 13. Database db = new MyDataBase(„myDb“, „uid“, „pwd“);! ExpressionParser parser = new SpelExpressionParser();! Expression exp = parser.parseExpression("name");! EvaluationContext context = new ! ! !
 ! ! ! !StandardEvaluationContext();! context.setRootObject(db);! String name = (String) exp.getValue(context);!
  • 14. Database db = new MyDataBase(„myDb“, „uid“, „pwd“);! ExpressionParser parser = new SpelExpressionParser();! Expression exp = parser.parseExpression("name");! String name = (String) exp.getValue(db);!
  • 15. @Configuration @Bean @DependsOn @Primary @Lazy @Import @ImportResource @Value
  • 16. @Configuration! public class AppConfig {! !@Value("#{jdbcProperties.url}") ! !private String jdbcUrl;! !! !@Value("#{jdbcProperties.username}") ! !private String username;! !@Value("#{jdbcProperties.password}") ! !private String password;! }!
  • 17. @Configuration! public class AppConfig {! !@Bean! !public FooService fooService() {! return new FooServiceImpl(fooRepository());! !}! !@Bean! !public DataSource dataSource() { ! return new DriverManagerDataSource(! ! !jdbcUrl, username, password);! !}! }!
  • 18. @Configuration! public class AppConfig {! !@Bean! !public FooRepository fooRepository() {! return new HibernateFooRepository! ! !
 ! ! ! ! !(sessionFactory());! }! @Bean! public SessionFactory sessionFactory() {! !...! }! }!
  • 19. <context:component-scan ! !base-package="org.example.config"/>
 <util:properties id="jdbcProperties" 
 ! !location="classpath:jdbc.properties"/>!
  • 20. public static void main(String[] args) {! ApplicationContext ctx = ! !new AnnotationConfigApplicationContext(! ! ! ! ! ! !AppConfig.class);! FooService fooService = ctx.getBean(! ! ! ! ! ! !FooService.class);! fooService.doStuff();! }!
  • 21. Marshalling Unmarshalling JAXB Castor JiBX Xstream XMLBeans
  • 22. <oxm:jaxb2-marshaller ! !id="marshaller" ! !contextPath=“my.packages.schema"/>! <oxm:jaxb2-marshaller id="marshaller">! <oxm:class-to-be-bound name=“Customer"/>! <oxm:class-to-be-bound name=„Address"/>! ...! </oxm:jaxb2-marshaller>!
  • 23. <beans>! <bean id="castorMarshaller" ! !class="org.springframework.oxm.castor.CastorMarshaller" >! <property name="mappingLocation" 
 ! !value="classpath:mapping.xml" />! </bean>! </beans>

  • 24. <oxm:xmlbeans-marshaller ! !id="marshaller“! !options=„XMLOptionsFactoryBean“/>!
  • 25. <oxm:jibx-marshaller ! !id="marshaller" ! !target-class=“mypackage.Customer"/>!
  • 26. <beans>! <bean id="xstreamMarshaller" !class="org.springframework.oxm.xstream.XStreamMarshaller">! <property name="aliases">! <props>! <prop key=“Customer">mypackage.Customer</prop>! </props>! !</property>! </bean>! ...! </beans>!
  • 27. Spring MVC @Controller @RequestMapping @PathVariable
  • 28. @Controller The C of MVC <context:component- scan/> Mapping to an URI (optional)
  • 29. @RequestMapping Mapping a Controller or Methods to an URI URI-Pattern Mapping to a HTTP- Method Works with @PathVariable
  • 30. @Controller! @RequestMapping(„/customer“)! public class CustomerController{! !@RequestMapping(method=RequestMethod.GET)! !public List<Customer> list(){! ! !return customerList;! !}! }!
  • 31. @Controller! @RequestMapping(„/customer“)! public class CustomerController{! !@RequestMapping(value=„/list“,! ! ! ! ! !method=RequestMethod.GET)! !public List<Customer> list(){! ! !return customerList;! !}! }!
  • 32. @Controller! @RequestMapping(„/customer“)! public class CustomerController{! !@RequestMapping(value=„/show/{customerId}“,! ! ! ! ! !method=RequestMethod.GET)! !public Customer show(! ! @PathVariable(„customerId“) long customerId){! ! !return customer;! !}! }!
  • 33. @Controller! @RequestMapping(„/customer“)! public class CustomerController{! !@RequestMapping(! ! !value=„/show/{customerId}/edit/{addressId}“,! ! ! ! ! !method=RequestMethod.GET)! !public String editAddressDetails(! ! @PathVariable(„customerId“) long customerId,! ! @PathVariable(„addressId“) long addressId){! ! !return „redirect:...“;! !}! }!
  • 34. RestTemplate Delete Get Head Options Post Put
  • 35. Host localhost:8080! Accept text/html, application/xml;q=0.9! Accept-Language fr,en-gb;q=0.7,en;q=0.3! Accept-Encoding gzip,deflate! Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7! Keep-Alive 300! public void displayHeaderInfo(! @RequestHeader("Accept-Encoding") String encoding,! @RequestHeader("Keep-Alive") long keepAlive) {! !...! }!
  • 36. public class VistorForm(! !@NotNull! !@Size(max=40)! !private String name;! JSR-303 !@Min(18)! !private int age;! }! <bean id="validator" ! !class=“...LocalValidatorFactoryBean" />!
  • 37. HSQL H2 Derby ...
  • 38. <jdbc:embedded-database id="dataSource">! <jdbc:script location="classpath:schema.sql"/>! <jdbc:script location="classpath:test-data.sql"/>! </jdbc:embedded-database>! EmbeddedDatabaseBuilder builder = new ! !
 ! ! ! !EmbeddedDatabaseBuilder();! EmbeddedDatabase db = builder.setType(H2)! ! ! ! !.addScript(“schema.sql")! ! ! ! !.addScript(„test-data.sql")! ! ! ! !.build();! //Do somethings: db extends DataSource! db.shutdown();!
  • 39. public class DataBaseTest {! private EmbeddedDatabase db;! @Before! public void setUp() {! !db = new EmbeddedDatabaseBuilder()! ! !.addDefaultScripts().build();! !! }! @Test! public void testDataAccess() {! JdbcTemplate template = new JdbcTemplate(db);! template.query(...);! }! @After! public void tearDown() {! db.shutdown();! }! }!
  • 40. @Async (out of EJB 3.1) JSR-303 JSF 2.0 JPA 2
  • 41.
  • 42. Spring Application Tools OSGi Flexible Deployments •  Spring project, bean •  OSGi bundle •  Support for all the and XML file overview and visual most common Java wizards dependency graph EE application •  Graphical Spring •  Classpath servers configuration editor management based •  Advanced support •  Spring 3.0 support on OSGi meta data for SpringSource including •  Automatic dm Server @Configuration generation of •  Advanced support and @Bean styles manifest for SpringSource tc •  Spring Web Flow dependency meta Server and Spring Batch data •  Cloud Foundry visual development •  SpringSource targeting for dm tools Enterprise Bundle Server and tc Server •  Spring Roo project Repository browser •  VMware Lab wizard and •  Manifest file Manager and development shell validation and best Workstation •  Spring Application practice integration and blue prints and best recommendations deployment practice validation
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48. Grails for Spring Best AOP- Java Practices driven Nice Test-driven Console
  • 49. @Roo* Command AspectJ Annotations Line Shell Intertype Metadata RoundTrip (Source- Declarations Level)
  • 50.
  • 51.
  • 52.
  • 53. roo> project --topLevelPackage com.tenminutes roo> persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY roo> entity --class ~.Timer --testAutomatically roo> field string --fieldName message --notNull roo> controller all --package ~.web roo> selenium test --controller ~.web.TimerController roo> perform tests roo> perform package roo> perform eclipse roo> quit $ mvn tomcat:run
  • 54.
  • 55.
  • 56. Roo for Best Groovy- Groovy Practices driven Test- Nice driven Console
  • 57. Have your next Web 2.0 Get instant feedback, Powered by Spring, project done in weeks See instant results. Grails out performs the instead of months. Grails is the premier competition. Dynamic, Grails delivers a new dynamic language agile web development age of Java web web framework for the without compromises. application productivity. JVM. Rapid Dynamic Robust
  • 58. Support Grails Project Project Wizard different Grails Converter Versions Grails Full Groovy Grails Tooling Command Support Prompt
  • 59.
  • 61.
  • 62. >grails create-app tenminutes-grails! <grails create-domain-class tenminutes.domain.Timer! Timer.groovy:! class Timer {! !String message! !static constraints = {! ! !message(nullable: false)! !}! }! >grails create-controller tenminutes.web.TimerController! TimerController.groovy:! class TimerControllerController {! !def scaffold = Timer! }! >grails run-app!
  • 63.
  • 64. •  http://www.springframework.org/ Spring •  http://www.springsource.com/ Grails & •  http://www.grails.org/ •  http://groovy.codehaus.org/ Groovy •  http://www.thorsten-kamann.de Extras •  http://www.itemis.de
  • 65.
  • 66. Erfolg durch Agilität: Scrum- Von »Exzellenten Kompakt mit Joseph Pelrine – Wissensorganisationen« lernen 14:00 bis 18:00 – 13:00 bis 18:30 25. Februar 2010 25. Februar 2010 Joseph Pelrine, Jena, Lise-Meitner-Allee 6, 44801 Veranstalter: itemis AG Bochum, Veranstalter: ck 2 Hands On Model-Based Embedded World 2010 – Halle Development with Eclipse – 10 – Stand 529 09:30 bis 16:30 02.-04. März 2010 04. März 2010 Nürnberg - Messezentrum 1 Axel Terfloth, Andreas Unger, embeddedworld Nürnberg Zukunft der Wissensarbeit. Best Practice Sharing auf der CeBIT 2010 – 10:00 bis 13:00 04. März 2010 Exzellente Wissensorganisation, Hannover, Veranstalter: ck 2, kostenlos