JDK srl Roma : Corso Java J2EE : SPRING_FRAMEWORK_CORE_E_AOP

0

No comments posted yet

Comments

Slide 1

Spring Framework Core e AOP

Slide 2

J2EE Applications Composte da più “blocchi” in collaborazione tra loro Utilizzano containers invasivi per la gestione di aspetti (transazioni,ecc.) Spesso non rispettano il principio “1:1” – design level requirements-implementation www.jdk.it

Slide 3

Le caratteristiche desiderabili DRY principle Modularity Information hiding Separation of Concerns www.jdk.it

Slide 4

DRY Principle Ogni sottosistema dovrebbe avere una rappresentazione singola, non ambigua, autoritativa. www.jdk.it

Slide 5

Modularity Un’unità in cui gli elementi strutturali sono strettamente legati tra loro e poco legati con le altre unità www.jdk.it

Slide 6

Information hiding Ogni modulo è caratterizzato dalla sua conoscenza della decisione di design che nasconde agli altri. La sua interfaccia o definizione è scelta per rivelare il meno possibile sul suo funzionamento. www.jdk.it

Slide 7

Separation of Concerns Significa focalizzare su una cosa alla volta www.jdk.it

Slide 8

Caratteristiche principali Lightweight container Strato di astrazione per transazioni Strato di astrazione JDBC Integrazione AOP Piena integrabilità con i frameworks più diffusi www.jdk.it

Slide 9

Spring lightweight container Configurazione centralizzata degli oggetti applicativi e dei loro collegamenti Non invasivo (le classi non devono implementare particolari interfaces o estendere classi del framework Assembla un sistema complesso a partire da componenti disaccoppiati (POJO) www.jdk.it

Slide 10

Astrazione per Transazioni Integra un transaction manager “preconfezionato” utilizzando le funzionalità AOP Demarca le transazioni a livello di configurazione senza dover gestire a codice le problematiche legate alla specificità del contesto. www.jdk.it

Slide 11

Strato di astrazione JDBC Uniforma la gestione delle transazioni Si integra con le più diffuse tecnologie ORM Classi di supporto (templates) DAO layer semplificato Riduzione possibilità errori www.jdk.it

Slide 12

Funzionalità AOP Approccio AOP integrato Supporto di una parte del progetto “AspectJ”  Proxy-based system AOP full language support www.jdk.it

Slide 13

I moduli di Spring www.jdk.it

Slide 14

Il file spring-context <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> </beans> XML BASED Configuration Metadata Attenzione: l’import degli xsd deve essere eseguito in base alle funzionalità implementate www.jdk.it

Slide 15

Istanziare i beans In fase di startup i beans vengono pre-istanziati come singletons Gli eventuali errori vengono rilevati subito senza attendere un tempo indefinito In ogni caso i beans possono essere istanziati quando richiesto (lazy-init) Ciascun bean può essere configurato affinchè venga restituita una istanza (scope="prototype“) www.jdk.it

Slide 16

Definizione di un bean <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverMana gerDataSource"> <property name="driverClassName“ value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/corsi" /> <property name="username" value="myUser" /> <property name="password" value="myPassword" /> </bean > www.jdk.it

Slide 17

… e di un altro bean che lo usi.. <bean id="empDAO" class="refbeanexample.EmployeeDAO"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean> Il bean sarà iniettato con la property “dataSource” dopo essere stato istanziato dal container e tramite il “setter” method. www.jdk.it

Slide 18

D.I. tramite costruttore <bean id="empDAO2" class="refbeanexample.EmployeeDAO"> <constructor-arg> <ref local="dataSource"/> </constructor-arg> </bean> Il risultato è il medesimo ma il bean è iniettato quando è istanziato. www.jdk.it

Slide 19

Constructor Argument type matching <bean id="exampleBean" class="examples.ExampleBean"> <constructor-arg type="int" value="7500000"/> <constructor-arg type="java.lang.String" value="42"/> </bean> www.jdk.it

Slide 20

Constructor Argument index <bean id="exampleBean" class="examples.ExampleBean"> <constructor-arg index="0" value="7500000"/> <constructor-arg index="1" value="42"/> </bean> www.jdk.it

Slide 21

Best practise E’ preferibile l’utilizzo di “setter injection” Alcune proprietà possono essere opzionali Il risultato sarà un xml più snello e controllabile Si evitano dipendenze circolari In alcuni casi, es. codice legacy, potrebbe essere opportuno o necessario l’uso di “constructor injection” www.jdk.it

Slide 22

Property values Il valore di una property è fornito tramite una stringa leggibile. Spring effettua automaticamente la conversione nel tipo richiesto dalla property Esistono forme “contratte” per specificare i valori di java.util.Properties www.jdk.it

Slide 23

Laboratorio Esempio bean-ref Esempio Costructor Inection www.jdk.it

Slide 24

Una Enterprise Application tipica Domain model Class Attributes attributes Class Attributes attributes Class Attributes attributes Data access DAOs/ Repository Business Services Service 1 Service 2 Service 3 Web Tier Action A Action B Action C www.jdk.it

Slide 25

Costruiamola con Spring Costruzione di POJO per il domain model Costruzione di DAO per Data Access Costruzione di Servizi Gestione delle transazioni Esempio utilizzo Hibernate www.jdk.it

Slide 26

Laboratorio Applicazione gestione corsi www.jdk.it

Slide 27

Aspect Oriented Programming Spring 2.0 (2006) e AspectJ 5 (2005) AOP è un approccio quindi una scelta per risolvere determinate problematiche Comunemente usato per la gestione delle transazioni in Spring grazie anche ad alcuni built-in beans www.jdk.it

Slide 28

Spring AOP framework proxy-based Java + ‘weaver’ Soluzione AOP più utilizzata Integrata con Spring container Limitato uso (execution) dei join points Sufficiente nel 90% dei casi Weaving: linking aspects with other application types or objects to create an advised object. This can be done at compile time (using the AspectJ compiler, for example), load time, or at runtime. Spring AOP, like other pure Java AOP frameworks, performs weaving at runtime. www.jdk.it

Slide 29

L’unità base di un aspetto Aspect Attributes Behaviours WHERE (pointcuts) WHAT (advice) use access www.jdk.it

Slide 30

Pointcuts E’ un’espressione con una sintassi simile a Regular Expressions Spring NON valida l’espressione Definisce, in Spring, quando viene eseguito un metodo con una determinata signature www.jdk.it

Slide 31

Join points (method execution) Un ‘method execution’ join point si verifica quando viene eseguito un metodo Le informazioni che possono essere usate per il join point: Nome del metodo Tipo parametro Tipo restituito Eccezione dichiarata www.jdk.it

Slide 32

Advices Ogni dichiarazione di advice è associata con un pointcut expression Il codice dell’advice viene eseguito nel join point verificato dal pointcut expression Rispetto al join point, l’advice può essere eseguito: Before After After returning After throwing Around www.jdk.it

Slide 33

Before advice “gira” prima di un join point verificato. Non può modificare i valori degli argomenti, non può influenzare il funzionamento del flusso logico se non lanciando una exception www.jdk.it

Slide 34

After Advice “gira” dopo un join point verificato, non può modificare il valore di ritorno, né influenzare il flusso computazionale; tranne lanciando una exception. www.jdk.it

Slide 35

After Returning advice “gira” dopo un ritorno eseguito da un join point verificato. Non può modificare il valore di ritorno e non può modificare il flusso computazionale, tranne lanciando una exception. www.jdk.it

Slide 36

After throwing “gira” dopo aver lasciato un join point verificato da una condizione di exception. Non può influenzare il flusso ma può a sua volta lanciare una exception. www.jdk.it

Slide 37

Around “gira” sia prima che dopo un join point verificato. Può determinare se, quando e come deve continuare il flusso computazionale, può cambiare gli argomenti, gli oggetti ed i valori di ritorno. Per motivi di performance utilizzarli solo quando non è possibile usare gli altri www.jdk.it

Slide 38

Proxy system Le classi devono implementare un’interface Il file di configurazione deve contenere il tag: <aop:aspectj-autoproxy/> Attenzione all’uso del puntatore ‘this’ Si riferisce al proxy Si riferisce all’advice www.jdk.it

Slide 39

Ancora sul transaction manager La versione precedente di Spring (2.0) utilizzava un proxy per la gestione delle transazioni La versione attuale utilizza un advice bean www.jdk.it

Slide 40

Potenzialità di AOP Possibilità di modellare, all’interno di un sistema: Transactions Security Remoting Tracing Profiling Failure handling Management Caching …. www.jdk.it

Summary: JDK srl Roma :Presentazione Corso SPRING_FRAMEWORK_CORE_E_AOP

Tags: java j2ee jdk jsf javafx framework struts hibernate spring apache tomcat portlet liferay portali crm cms

URL: