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.
5. Architecture Vision – Cross-Sectional Tasks
06.09.2012 5 Lean Web Architecture mit JSF 2.0, CDI & Co.
6. Architecture Vision – Technology Stack
06.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
Bean
Validation
<<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
Bean
Validation
<<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
> @Resource
10.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 injizieren
10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
16. User Story driven injizieren
Qualifier & Producer
import de.adesso.cdi.common.Current;
import javax.enterprise.inject.Produces;
@Named
@SessionScoped
public 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 injizieren
Qualifier & Producer
import 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 Komponenten
10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
19. Custom Components
► Technische Umsetzung
des Styleguides
10.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 Support
10.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 JPA
10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
23. Doozer
► Java Bean to
Java Bean Mapper
10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
24. SpringData
► ermöglicht Zugriff auf
relationale und NoSQL
Datenbanken
► CDI Integration
10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.
25. 10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.