Lean web architecture mit jsf 2.0, cdi & co.

1,378 views
1,244 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
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,378
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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.

×