+ All Categories
Home > Technology > Lean web architecture mit jsf 2.0, cdi & co.

Lean web architecture mit jsf 2.0, cdi & co.

Date post: 03-Feb-2015
Category:
Upload: adesso-ag
View: 1,510 times
Download: 0 times
Share this document with a friend
Description:
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.
25
Schlankheitskur Lean Web Architecture mit JSF 2.0, CDI & Co. Andreas Hartmann 26.06.2022
Transcript
Page 1: Lean web architecture mit jsf 2.0, cdi & co.

10.04.2023

SchlankheitskurLean Web Architecture mit JSF 2.0, CDI & Co.

Andreas Hartmann

Page 2: Lean web architecture mit jsf 2.0, cdi & co.

10.04.2023 2

Agenda

Lean Web Architecture mit JSF 2.0, CDI & Co.

Architecture Vision

Lean Webarchitecture

JSF meets CDI

Technical Solutions

Page 3: Lean web architecture mit jsf 2.0, cdi & co.

10.04.2023 3

Architecture Vision

Lean Web Architecture mit JSF 2.0, CDI & Co.

Page 4: Lean web architecture mit jsf 2.0, cdi & co.

10.04.2023 4

Architecture Vision – 3 Layer Reflex

Lean Web Architecture mit JSF 2.0, CDI & Co.

Presentation Layer

Business Layer <<Service>>

<<GUI>>

Integration Layer <<Adapter>>

<<

Do

mai

n M

od

el>

>

Over-engineering

Boiler Plate Code

Expensive

Page 5: Lean web architecture mit jsf 2.0, cdi & co.

10.04.2023 5

Architecture Vision – Cross-Sectional Tasks

Lean Web Architecture mit JSF 2.0, CDI & Co.

Page 6: Lean web architecture mit jsf 2.0, cdi & co.

10.04.2023 6

Architecture Vision – Technology Stack

Lean Web Architecture mit JSF 2.0, CDI & Co.

JSF

Doozer

jQuery

Bean Validation

Spring Data

CDI

Page 7: Lean web architecture mit jsf 2.0, cdi & co.

Lean Webarchitecture – Tiny Applications

10.04.2023 Lean Web Architecture mit JSF 2.0, CDI & Co.7

Client Tier

<<View>>

<<Adapter DB>>

<< . . . >>

MiddleTier

<<Presenter>>

<<Model>>

<<Domain Model>>

Spring Data

jQuery

Bean Validation

JSF

CDI

Lombok

Page 8: Lean web architecture mit jsf 2.0, cdi & co.

Lean Webarchitecture – Large Scale Applications

10.04.2023 Lean Web Architecture mit JSF 2.0, CDI & Co.8

Client Tier

<<View>>

MiddleTier

<<Domain Model>>

jQuery

<<Presenter>> <<Adapter DB>><<Service>>

<<Model>> <<. . . >> << . . . >>

JSF

Spring Data

Doozer

CDI

Bean Validation

Lombok

Page 9: Lean web architecture mit jsf 2.0, cdi & co.

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.

Page 10: Lean web architecture mit jsf 2.0, cdi & co.

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.

Page 11: Lean web architecture mit jsf 2.0, cdi & co.

CDI Bausteine

CDI Bausteine

► Typsicherheit> Stereotypes

> Qualifier

> Alternatives

► Lose Kopplung> Interceptors

> Decorator

> Events

► Sichtbarkeiten> Scopes

> Lifecycle Awareness

10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.

Page 12: Lean web architecture mit jsf 2.0, cdi & co.

CDI im Detail

10.08.2012

Facelets(JSF)

@ManagedBean(JSF)@Named

PostBoxService

#{ ... }

@Inject

User

...

Lean Web Architecture mit JSF 2.0, CDI & Co.

Page 13: Lean web architecture mit jsf 2.0, cdi & co.

CDI im Detail

CDI Managed Bean

10.08.2012

#{userController}

Injection Point

gültig für Request

import javax.enterprise.context.RequestScoped;import javax.inject.Named;import javax.inject.Inject;

@Named("userController")@RequestScopedpublic class UserController {

@Inject private UserService userService; private List<User> users;

@PostConstruct private void init() { this.users = userService.findAllUsers(); }

POJO

Lean Web Architecture mit JSF 2.0, CDI & Co.

Page 14: Lean web architecture mit jsf 2.0, cdi & co.

CDI im Detail

CDI Injection Points

► Field Injection

► Constructor Injection

► Setter Injection

10.08.2012

@Injectprivate UserService userService;

@Injectpublic UserController(UserService userService) { this.userService = userService;}

@Injectpublic void setUserService(UserService userService) { this.userService = userService;}

Lean Web Architecture mit JSF 2.0, CDI & Co.

Page 15: Lean web architecture mit jsf 2.0, cdi & co.

User Story driven injizieren

Qualifier & 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.

Page 16: Lean web architecture mit jsf 2.0, cdi & co.

User Story driven injizieren

Qualifier & Producer

10.08.2012

import de.adesso.cdi.common.Current;

import javax.enterprise.inject.Produces;

@Named@SessionScopedpublic class Authenticationimplements Serializable {

private User authenticatedUser; public String authenticate() {...}

@Produces @Named("authenticatedUser") @Current public User getAuthenticatedUser() { return authenticatedUser; }

EL: #{authenticatedUser}

Lean Web Architecture mit JSF 2.0, CDI & Co.

Page 17: Lean web architecture mit jsf 2.0, cdi & co.

Fachlichkeit statt Infrastruktur injizieren

Qualifier & Producer

10.08.2012

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); }

Lean Web Architecture mit JSF 2.0, CDI & Co.

Page 18: Lean web architecture mit jsf 2.0, cdi & co.

HTML 5

10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.

►Mit JSF2.2 auch HTML5 Komponenten

Page 19: Lean web architecture mit jsf 2.0, cdi & co.

Custom Components

10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.

►Technische Umsetzung des Styleguides

Page 20: Lean web architecture mit jsf 2.0, cdi & co.

jQuery

10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.

►freie, umfangreiche JavaScript Bibliothek

►komfortable Möglichkeit zur DOM Manipulation

►Erweiterbarkeit durch Plugins (u.a. DataTable)

Page 21: Lean web architecture mit jsf 2.0, cdi & co.

Lombok

10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.

►Reduziert Boilerplate Code durch Annoations

>@Getter, @Setter

>@ToString

>@HashCodeAndEquals

>@Data

> . . .

►Delombok Funktionalität

►Eclipse Support

Page 22: Lean web architecture mit jsf 2.0, cdi & co.

JSR 303: Bean Validation

10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.

►Standardisierung von Constraints in Form von Annotations

►Standardisierung des Metadata API

►Integration anderer Frameworks wie z.B. JSF und JPA

Page 23: Lean web architecture mit jsf 2.0, cdi & co.

Doozer

10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.

►Java Bean to Java Bean Mapper

Page 24: Lean web architecture mit jsf 2.0, cdi & co.

SpringData

10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.

►ermöglicht Zugriff auf relationale und NoSQL Datenbanken

►CDI Integration

Page 25: Lean web architecture mit jsf 2.0, cdi & co.

10.08.2012 Lean Web Architecture mit JSF 2.0, CDI & Co.


Recommended