Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
SchlankheitskurLean Web Architecture mit JSF 2.0, CDI & Co.Andreas Hartmann06.09.2012
Agenda                 Architecture Vision                     Lean Webarchitecture                     JSF meets CDI     ...
Architecture Vision06.09.2012   3   Lean Web Architecture mit JSF 2.0, CDI & Co.
Architecture Vision – 3 Layer Reflex                                                            Over-         Presentation...
Architecture Vision – Cross-Sectional Tasks06.09.2012   5   Lean Web Architecture mit JSF 2.0, CDI & Co.
Architecture Vision – Technology Stack06.09.2012   6   Lean Web Architecture mit JSF 2.0, CDI & Co.
Lean Webarchitecture – Tiny Applications      Client Tier                                                       MiddleTier...
Lean Webarchitecture – Large Scale Applications   Client Tier                                                    MiddleTie...
Warum CDI?Dependency Injection►   Container steuert Objekte und Abhängigkeiten    > Instanziiert Objekte    > Injiziert Ab...
Warum CDI?Dependency Injection mit CDI►   Standardisiertes DI für Java (SE/EE)    > Typsicherheit    > Wiederverwendbarkei...
CDI BausteineCDI Bausteine►   Typsicherheit    > Stereotypes    > Qualifier    > Alternatives►   Lose Kopplung    > Interc...
CDI im Detail        Facelets         (JSF)                                @ManagedBean   #{ ... }                       @...
CDI im DetailCDI Managed Bean import javax.enterprise.context.RequestScoped; import javax.inject.Named; import javax.injec...
CDI im DetailCDI Injection Points►   Field Injection    @Inject    private UserService userService;►   Constructor Injecti...
User Story driven injizierenQualifier & Producer►   Aktuellen Benutzer injizieren    @Inject @Current private User user;► ...
User Story driven injizierenQualifier & Producerimport de.adesso.cdi.common.Current;import javax.enterprise.inject.Produce...
Fachlichkeit statt Infrastruktur injizierenQualifier & Producerimport de.adesso.cdi.common.Current;public class CustomerSe...
HTML 5                                                            ►   Mit JSF2.2 auch                                     ...
Custom Components                                                            ►   Technische Umsetzung                     ...
jQuery                                                            ►   freie, umfangreiche                                 ...
Lombok                                                            ►   Reduziert Boilerplate                               ...
JSR 303: Bean Validation                                                            ►   Standardisierung von              ...
Doozer                                                            ►   Java Bean to                                        ...
SpringData                                                            ►   ermöglicht Zugriff auf                          ...
10.08.2012   Lean Web Architecture mit JSF 2.0, CDI & Co.
Upcoming SlideShare
Loading in …5
×

Lean web architecture mit jsf 2.0, cdi & co.

1,727 views

Published on

Vortrag von Andreas Hartmann, Principal Software Architect bei adesso, auf dem Herbstcampus 2012 zu ‚Lean Web Architecture mit JSF 2.0 & CDI‘. Die Präsentation vermittelt, wie man in kürzester Zeit komplexe Anwendungen entwickeln kann – auf schlankem Weg.

Published in: Technology, Education
  • Be the first to comment

Lean web architecture mit jsf 2.0, cdi & co.

  1. 1. SchlankheitskurLean Web Architecture mit JSF 2.0, CDI & Co.Andreas Hartmann06.09.2012
  2. 2. Agenda Architecture Vision Lean Webarchitecture JSF meets CDI Technical Solutions06.09.2012 2 Lean Web Architecture mit JSF 2.0, CDI & Co.
  3. 3. Architecture Vision06.09.2012 3 Lean Web Architecture mit JSF 2.0, CDI & Co.
  4. 4. Architecture Vision – 3 Layer Reflex Over- Presentation Layer <<GUI>> engineering <<Domain Model>> Boiler Plate Business Layer <<Service>> Code Integration Layer Expensive <<Adapter>>06.09.2012 4 Lean Web Architecture mit JSF 2.0, CDI & Co.
  5. 5. Architecture Vision – Cross-Sectional Tasks06.09.2012 5 Lean Web Architecture mit JSF 2.0, CDI & Co.
  6. 6. Architecture Vision – Technology Stack06.09.2012 6 Lean Web Architecture mit JSF 2.0, CDI & Co.
  7. 7. Lean Webarchitecture – Tiny Applications Client Tier MiddleTier JSF jQuery <<Presenter>> <<Adapter DB>> Spring Data <<View>> CDI <<Model>> << . . . >> Lombok BeanValidation <<Domain Model>> 06.09.2012 7 Lean Web Architecture mit JSF 2.0, CDI & Co.
  8. 8. Lean Webarchitecture – Large Scale Applications Client Tier MiddleTier JSF jQuery <<Presenter>> <<Service>> <<Adapter DB>> Spring Data <<View>> CDI <<Model>> <<. . . >> << . . . >> Lombok Doozer BeanValidation <<Domain Model>> 06.09.2012 8 Lean Web Architecture mit JSF 2.0, CDI & Co.
  9. 9. Warum CDI?Dependency Injection► Container steuert Objekte und Abhängigkeiten > Instanziiert Objekte > Injiziert Abhängigkeiten zur Laufzeit (lose Kopplung)► Konfiguration über Annotations oder XML-Datei► Populär geworden durch das Spring Framework► Seit EJB3.0 auch in Java EE verfügbar > @EJB > @PersistenceUnit > @Resource10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  10. 10. Warum CDI?Dependency Injection mit CDI► Standardisiertes DI für Java (SE/EE) > Typsicherheit > Wiederverwendbarkeit > Testbarkeit > Flexiblität > Lifecycle „Awareness“► User Story driven injizieren10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  11. 11. CDI BausteineCDI Bausteine► Typsicherheit > Stereotypes > Qualifier > Alternatives► Lose Kopplung > Interceptors > Decorator > Events► Sichtbarkeiten > Scopes > Lifecycle Awareness10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  12. 12. CDI im Detail Facelets (JSF) @ManagedBean #{ ... } @Named (JSF) @Inject User PostBoxService ...10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  13. 13. CDI im DetailCDI Managed Bean import javax.enterprise.context.RequestScoped; import javax.inject.Named; import javax.inject.Inject; #{userController} @Named("userController") @RequestScoped gültig für Request public class UserController { @Inject POJO private UserService userService; private List<User> users; Injection Point @PostConstruct private void init() { this.users = userService.findAllUsers(); }10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  14. 14. CDI im DetailCDI Injection Points► Field Injection @Inject private UserService userService;► Constructor Injection @Inject public UserController(UserService userService) { this.userService = userService; }► Setter Injection @Inject public void setUserService(UserService userService) { this.userService = userService; }10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  15. 15. User Story driven injizierenQualifier & Producer► Aktuellen Benutzer injizieren @Inject @Current private User user;► Fachlichkeit injizieren @Inject @Admin private List<User> administrators; @Inject @Editor private List<User> editors;► Infrastruktur injizieren @Inject @UserDB private EntityManager userDB; @Inject @ProductDB private EntityManager productDB;10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  16. 16. User Story driven injizierenQualifier & Producerimport de.adesso.cdi.common.Current;import javax.enterprise.inject.Produces;@Named@SessionScopedpublic class Authenticationimplements Serializable { private User authenticatedUser; public String authenticate() {...} EL: #{authenticatedUser} @Produces @Named("authenticatedUser") @Current public User getAuthenticatedUser() { return authenticatedUser; }10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  17. 17. Fachlichkeit statt Infrastruktur injizierenQualifier & Producerimport de.adesso.cdi.common.Current;public class CustomerService implements CustomerService { @Inject @Current private User currentUser; public void addCustomer(Customer customer) { customer.setCreator(currentUser); em.persist(customer); }10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  18. 18. HTML 5 ► Mit JSF2.2 auch HTML5 Komponenten10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  19. 19. Custom Components ► Technische Umsetzung des Styleguides10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  20. 20. jQuery ► freie, umfangreiche JavaScript Bibliothek ► komfortable Möglichkeit zur DOM Manipulation ► Erweiterbarkeit durch Plugins (u.a. DataTable)10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  21. 21. Lombok ► Reduziert Boilerplate Code durch Annoations > @Getter, @Setter > @ToString > @HashCodeAndEqu als > @Data > ... ► Delombok Funktionalität ► Eclipse Support10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  22. 22. JSR 303: Bean Validation ► Standardisierung von Constraints in Form von Annotations ► Standardisierung des Metadata API ► Integration anderer Frameworks wie z.B. JSF und JPA10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  23. 23. Doozer ► Java Bean to Java Bean Mapper10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  24. 24. SpringData ► ermöglicht Zugriff auf relationale und NoSQL Datenbanken ► CDI Integration10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  25. 25. 10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.

×