Spring Framework Core e AOP. J2EE Applications Composte da più “blocchi” in collaborazione tra loro Utilizzano containers invasivi per la gestione di.

Slides:



Advertisements
Presentazioni simili
Java Enterprise Edition (JEE)
Advertisements

LABIS-SD Antonio Cuomo393/121 Clelio Quattrocchi393/127 Emanuele Zuzolo393/136 Fabio Melillo393/141 Stefano Mastrocinque393/135 Valerio Vincenzo Guarino393/155.
EJB Enterprise Java Beans B. Pernici. Approccio Java.
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
Spring Framework Spring è un framework Open Source per lo sviluppo di applicazioni su piattaforma Java. Vantaggi: Libertà di programmazione Comunità molto.
Giuseppe Gramazio e Massimo Legnani Framework integrato per il delivery di applicazioni context aware, multimodali e accessibili – SAF (Situation aware.
Ingegneria del software Modulo 3 -Tecniche d’implementazione Unità didattica 1 -Ingegneria dei componenti Ernesto Damiani Università degli Studi di Milano.
Progettazione e realizzazione di un’applicazione J2EE Parte 2.
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
Syncope: IdM OpenSource Gestione delle identità digitali.
JUG – Ancona Italy Spring Framework Andrea Del Bene Jug Marche.
Giuditta Cantoni, 4 E S.I.A I DATABASE. Definizione databese In informatica, il termine database, banca dati o base di dati (a volte abbreviato con il.
CORSO elementare su DATABASE Applicativo utilizzato OpenOffice 3.0.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Programmazione in Java Parte II Lezione 5 Dott. Marco Faella.
VO-Neural Project e GRID Giovanni d’Angelo Dipartimento di Scienze Fisiche Università degli Studi di Napoli Federico II Martina Franca 12 – 23 Novembre.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Corso per Webmaster base
© 2007 SEI-Società Editrice Internazionale, Apogeo
Università degli Studi di Modena e Reggio Emilia
Lato Server - OMNIS Web Web Services.
Piattaforma per industrie stampaggio
Office WPC049 Strumenti di supporto e analisi per Office 365
Crea il tuo sistema aziendale sul web a partire dei fogli Excel che usi. ShareXLS
CARATTERISTICHE DI UN DATACENTER
Breve report su corso RedHat Enterprise Virtualization (RH318)
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Programmazione per la Musica | Adriano Baratè
PROGETTO DI RETI DI CALCOLATORI L-S
Terza Lezione → Navigare nel file System → parte 2
Dichiarazione dei servizi di sito nel GOCDB
Sviluppare applicazioni usando la piattaforma di Firefox
GridFlex: gestione di software
Il Binding Nicolò Sordoni.
Aurelio LEONE CTS OCP – Bologna 28/07/2016
Paradigma MVC Ing. Buttolo Marco.
VERT.X Un TOOLKIT per creare applicazioni reattive.
Diagrammi Implementativi
Introduzione alle griglie computazionali
Job Application Monitoring (JAM)
Il business model Giorno 3
UML Creato da: Enrico Tarantino Alessandro Vilucchi Roberta Barcella.
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
PROGRAMMAZIONE BASH – ISTRUZIONE IF
DTD Document Type Definition per XML
Organizzare, gestire e proteggere i laboratori informatici
Programmazione ad Oggetti per la Fisica
analizzatore di protocollo
Studente : Andrea Cassarà Classe: 5AII A.S. 2014/2015 Link Sito
Corso di Ingegneria del Web A A Domenico Rosaci 1
Organizzazione di una rete Windows 2000
ENTRIAMO IN LABORATORIO
Programmazione e Laboratorio di Programmazione
Programmare.
ABAP Objects ALV Grid Mantova, 30 dicembre 2018.
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Copia di oggetti il costruttore di copia ha le stesse particolarità della signature di un costruttore ordinario; il primo parametro è una reference ad.
ADO Per gestire i database con tecnologia ASP si utilizzano strumenti ADO (ActiveX Data Objects): un'architettura che fornisce oggetti.
FULL STACK SENIOR DEVELOPER
Presentazione Tennis3M Contabilità
© 2007 SEI-Società Editrice Internazionale, Apogeo
OpenLayers Client di mappe “non solo” WMS
Unità 1 Programmi base.
Risolvere le moltiplicazioni tra frazioni
Lezione Terza Primi passi di programmazione
Progetto del processore e supporto del processore al SO (interruzioni – eccezioni) Salvatore Orlando.
Il questionario: progettazione e redazione II Modulo
Transcript della presentazione:

Spring Framework Core e AOP

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

Le caratteristiche desiderabili DRY principle Modularity Information hiding Separation of Concerns

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

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

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.

Separation of Concerns Significa focalizzare su una cosa alla volta

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

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)

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.

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

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

I moduli di Spring

Il file spring-context <beans xmlns=" xmlns:xsi=" xmlns:context=" xsi:schemaLocation=" XML BASED Configuration Metadata Attenzione: l’import degli xsd deve essere eseguito in base alle funzionalità implementate

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“)

Definizione di un bean

… e di un altro bean che lo usi.. Il bean sarà iniettato con la property “dataSource” dopo essere stato istanziato dal container e tramite il “setter” method.

D.I. tramite costruttore Il risultato è il medesimo ma il bean è iniettato quando è istanziato.

Constructor Argument type matching

Constructor Argument index

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”

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

Laboratorio Esempio bean-ref Esempio Costructor Inection

Una Enterprise Application tipica Domain model Class Attributes attributes Class Attributes attributes Class Attributes attributes Data access DAOs/ Repository Business Services Service 1Service 2 Service 3 Web Tier Action AAction BAction C

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

Laboratorio Applicazione gestione corsi

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

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.

L’unità base di un aspetto Aspect Attributes Behaviours WHERE (pointcuts) WHAT (advice) us e access

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

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: o Nome del metodo o Tipo parametro o Tipo restituito o Eccezione dichiarata

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

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

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

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.

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.

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

Proxy system Le classi devono implementare un’interface Il file di configurazione deve contenere il tag: o Attenzione all’uso del puntatore ‘this’ o Si riferisce al proxy o Si riferisce all’advice

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

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