Guida Java Spring
Introduzione a Spring – Guida Java Spring
Spring è un framework open source per lo sviluppo di applicazioni Java, in paritcolare per applicazioni J2EE.
La prima versione del framework fu rilasciata nel 2002 da Rod Johnson, subendo poi molti cambiamenti che hanno portato questo framework ad essere molto apprezzato dalla comunità internazionale ed a vincere nel 2006 un Jolt productivity award e un JAX Innovation Award.
Ma perchè...
IoC e DI (Inversion of Control e Dependency Injection) – Guida Java Spring
L'Inversion of Control (IoC) è una caratteristica tipica dei framework, che spostano il controllo del flusso dall'applicativo al framework stesso.
Facciamo un esempio per chiarire il concetto: se si crea una GUI attraverso le API swing, il programmatore deve solo preoccuparsi di implementare gli handler degli eventi scatenati dall'utente, quali la pressione di un tasto o l'inserimento di un testo....
I moduli di Spring – Guida Java Spring
Come detto in precedenza, uno dei vantaggi di Spring è quello di essere modulare. I suoi layer principali sono:
Core Container
Data Access
Web
Aop
Test
Il layer Core Container è formato dai moduli: Core, Beans, Context, e Expression Language. I moduli Core e Beans formano la struttura principale del framework, includendo le funzionalità di IoC e DI, che sono implementate tramite la BeanFactory, che...
Core container – IoC container – Guida Java Spring
L'IoC container è la parte di Spring che si occupa di instanziare e configurare gli oggetti che vengono inseriti in esso, che prendono il nome di beans.
I beans vengono configurati attraverso dei metadati che possono essere dei file xml o delle Java annotations. Di default i metadati vengono letti solo dagli xml, per abilitare l'uso delle annotations c'è bisogno...
Core container – Spring beans – Guida Java Spring
In questa sezione andremo ad analizzare la configurazione dell'IoC container attraverso i metadati xml. Per instazionare un bean nell'IoC contanier ci bastano solo due infomarzioni:
Qualified Name della classe a cui appartiene l'oggetto
Un id unico nel contesto da assegnare al bean
Esempio:
<beans id="myBean" class="com.MyClass"/>
<beans class="com.MyClass1"/>
Nel secondo esempio si è omesso l'attributo id volutamente, poichè se non viene specificato Spring ne...
Core container – Constructor Dependency Injection – Guida Java Spring
Vediamo ora, attraverso un esempio, come usare la Constructor Dependency Injection. Creiamo il nostro bean che dipende da un servizio generico:
package it.mrwebmaster.di.constructor;
public class Bean {
private GenericService genericService;
private String beanName;
/**
* Costruttore
* @param genericService
* @param beanName
*/
public Bean(GenericService genericService, String beanName) {
...
Core container – Setter Dependency Injection – Guida Java Spring
L'uso della Constructor Dependency Injection può portare alla creazione di dipendenze cicliche tra i beans. Ad esempio se un oggeto A ha bisogno per essere instanziato di un oggetto B, ma allo stesso tempo l'oggetto B ha bisogno dell'oggetto A, si crea un dipendenza che non può essere risolta usando la Constructor Dependency Injection.
In casi come questi si deve...
Core container – @Autowired e Resources – Guida Java Spring
Nei paragrafi precedenti abbiamo visto come configure l'IoC container attraverso i metadati in formato xml. Di default la configurazione attraverso le Java Annotation non è abilitata, per abilitarla è necessario inserire nell'applicationContext.xml il tag <context:annotation-config/>. Vediamo ora come usare l'annotazione @Autowired per configurare le dipendenze.
@Autowired su costruttore
public class AutowiredBean1 {
private ServiceAW1 service1;
private ServiceAW2...
Web – Web MVC Framework – Guida Java Spring
La parte di Spring che si occupa del layer di presentazione dei dati specifico per applicazioni Web è il Web MVC Framework. Come da filosofia di Spring anche per usare questo modulo non è necessario estendere o implementare nessuna interfaccia specifica del framework. Per implementare l'MVC, Spring usa tre elementi principali:
DispatcherServlet
Handlers
View Resolver
La DispatcherServlet è una servlet che si...
Web – I controller – Guida Java Spring
Come detto nel paragrafo precendente i controller si occupano di servire le richieste che vengono fornite dalla DispatchServlet. Per indicare quali richieste devono essere inoltrate ai propri metodi in ogni controller ci sono una serie di @RequestMapping. Oltre a definire il path per il quale deve essere invocato un determinato metodo, si può definire l'HTTP method per il...
Web – View Resolver e Spring Form TLD – Guida Java Spring
Spring dispone di molti View Resolver, che hanno lo scopo di renderizzare il model in browser. Noi analizzeremo solo l'InternalResourceViewResolver che è che suppota Servlet e jsp.
Come visto in precendenza ogni controller restituisce il nome logico di una view che viene risolta attraverso il view resolver, nel nostro caso la view finale è una jsp. Per configurare l'InternalResourceViewResolver...
Web – Un esempio completo – Guida Java Spring
Vediamo ora un esempio di web application; più precisamente vediamo come implementare un controller e delle jsp che permettano di aggiungere un libro ad una collezione di libri.
Prima di tutto, nel nostro web.xml, configuriamo il WebApplicationContext e mappiamo la DispatcherServlet:
<!-- SPRING -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- MVC -->
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
...
AOP – Introduzione alla programmazione orientata agli aspetti – Guida Java Spring
La programmazione orientata agli aspetti (Aspect-Oriented Programming o, più brevemente, AOP) rappresenta un altro modo di vedere la progettazione di un software. Al contrario della programmazzione orientata sugli oggetti (Object-Oriented Programming - OOP) dove l'elemento principale è la classe, nella AOP tutto è basato sugli aspect.
Un aspect rappresenta una modularizzazione di una relazione trasversale tra più classi, cioè...
AOP – Proxies – Guida Java Spring
Prima di passare a vedre come si creano gli aspect con i rispettivi advice e pointcut, è molto importante capire come funzionano i proxies. Un proxy non è altro che un wrapper (contenitore) che racchiude un oggetto ed espone tutti i medodi pubblici dell'oggetto stesso. Quando viene invocato un metodo sul proxy l'esecuzione reale del metodo viene delegata...
AOP – Creare un Aspect – Guida Java Spring
Vediamo ora come creare un aspect. Prima di tutto creaiamo una interfaccia di esempio sulla quale andremo a scrivere i nostri pointcuts:
public interface MyInterface {
public void f1();
public int f2();
public int f3() throws Exception;
public void f4() throws Exception;
public int f5();
}
Per scrivere un pointcut bisogna conoscere gli AspectJ pointcut designators, nei...
ORM Data Access – Guida Java Spring
Spring supporta l'integrazione con molti framework per l'ORM (Object Relational Mapping), ma, per ragioni espositive, ci soffermeremo solo a vedere come integrare Hibernate e JPA in un progetto Spring.
Spring supporta questi framework per operazioni quali la gestione delle risorse, l'implemantazione dei DAO (Data Access Object) e la gestione delle transazioni. Attraverso l'integrazione con Spring è possibile configurare tali...
Data Access – Creare un ORM Layer utilizzando Hibernate e JPA – Guida Java Spring
Vediamo ora come creare un ORM layer usando Hibernate 3 e JPA 2 (per la corretta comprensione di questa lezione, si suppone che il lettore abbia delle conoscenze di base riguardanti i data source e il funzionamento di Hibernate e JPA).
Supponiamo di avere un DB MySql installato sulla nostra macchina; per prima cosa definiamo nel nostro applicationContext.xml un data...
Data Access – Creazione DAO e gestione delle transazioni – Guida Java Spring
Rifacendoci all'esempio del paragrafo precedente, vediamo come creare il DAO per l'entity Car.
Prima di tutto creaimo una interfaccia con i metodi base di un DAO e cioè: caricamento, salvataggio, aggiornamento e cancellazione.
package it.mrwebmaster.hibernate.dao;
import it.mrwebmaster.hibernate.Car;
public interface CarDao {
public Car load(Integer id);
public Car save(Car car);
public Car update(Car car);
public void remove(Car car);
}
Creata l'interfaccia passiamo...
Codici di esempio – Guida Java Spring
Nel file zip scaricabile qui sono presenti, in un progetto Eclipse, tutti i codici usati negli esempi di questo articolo. In particolare il progetto, oltre ad essere un contenitore degli esempi, è anche un progetto web che mostra l'uso di spring mvc. Gli esempi sono divisi per package in questo modo:
it.mrwebmaster: esempi capitolo 1
it.mrwebmaster.aop: esempi su AOP
it.mrwebmaster.di.*: esempi...