• Like
Lean web architecture mit jsf 2.0, cdi & co.
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Lean web architecture mit jsf 2.0, cdi & co.

  • 987 views
Published

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 …

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
987
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
14
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. SchlankheitskurLean Web Architecture mit JSF 2.0, CDI & Co.Andreas Hartmann06.09.2012
  • 2. Agenda Architecture Vision Lean Webarchitecture JSF meets CDI Technical Solutions06.09.2012 2 Lean Web Architecture mit JSF 2.0, CDI & Co.
  • 3. Architecture Vision06.09.2012 3 Lean Web Architecture mit JSF 2.0, CDI & Co.
  • 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. Architecture Vision – Cross-Sectional Tasks06.09.2012 5 Lean Web Architecture mit JSF 2.0, CDI & Co.
  • 6. Architecture Vision – Technology Stack06.09.2012 6 Lean Web Architecture mit JSF 2.0, CDI & Co.
  • 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. 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. 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. 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. 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. CDI im Detail Facelets (JSF) @ManagedBean #{ ... } @Named (JSF) @Inject User PostBoxService ...10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  • 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. 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. 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. 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. 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. HTML 5 ► Mit JSF2.2 auch HTML5 Komponenten10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  • 19. Custom Components ► Technische Umsetzung des Styleguides10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  • 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. 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. 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. Doozer ► Java Bean to Java Bean Mapper10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  • 24. SpringData ► ermöglicht Zugriff auf relationale und NoSQL Datenbanken ► CDI Integration10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
  • 25. 10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.