- Learn
- Guida Java Spring
- Auto-proxing e configurazione del container con AspectJ
Auto-proxing e configurazione del container con AspectJ
- di Stefano Leli
Passiamo ora a descrivere la configurazione dello IoC Container. Analizzando il file possiamo notare alcune differenza nella parte di proxing dei bean che definiscono gli oggetti target.
Nelle precedenti lezioni su Spring AOP abbiamo visto che per poter applicare degli advice su di un oggetto (il target object) questo andava wrappato attraverso un proxy; è infatti in questo modo che Spring AOP può intercettare i metodi invocati sul target object.
Per semplificare questo aspetto Spring 2.x permette di effettuare l’auto-proxing degli oggetti target utilizzando il tag aop:Aspectj-autoproxy
, semplificando notevolmente la configurazione delli IoC Contanier.
Un altro cambiamento introdotto dall’utilizzo di @AspectJ è l’aggiunta di un apposito schema aop
al file XML, come è possibile notare nell’esempio.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<!-- Abilita funzionalità di auto-proxy -->
<aop:Aspectj-autoproxy proxy-target-class="true"/>
<!-- Definizione LogAspect -->
<bean class="it.html.spring.aop.Aspectj.LogAspect" />
<!-- Definizionei de bean visti in precedenza -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" />
<property name="url" value="jdbc:derby://localhost:1527/library;create=true" />
<property name="username" value="app" />
<property name="password" value="app" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="bookDao" class="it.html.spring.book.BookSimpleJdbcDaoSupportNamedValue">
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
</beans>
Lanciamo il test
Non resta infine che scrivere una classe per testare quanto prodotto.
public class BookClient {
public static void main(String[] args) {
BeanFactory ctx = new XmlBeanFactory(new ClassPathResource("beans.xml"));
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
// Delete
bookDao.delete("1234567890123");
bookDao.delete("1234567890321");
// Insert Promessi Sposi
Book book = new Book();
book.setIsbn("1234567890123");
book.setAuthor("Manzoni");
book.setTitle("I Promessi Sposi");
bookDao.insert(book);
// Insert Il Barone Rampante
book = new Book();
book.setIsbn("1234567890321");
book.setAuthor("Italo Calvino");
book.setTitle("Il Barone Rampante");
bookDao.insert(book);
// Find Promessi Sposi
book = bookDao.findByISBN("1234567890123");
// Update Promessi Sposi
book.setAuthor("Alessandro Manzoni");
bookDao.update(book);
// Book Count
bookDao.bookCount();
// Find all books
bookDao.findAllBooks();
}
}
Per effettuare delle prove è possibile scaricare l’esempio completo.
Se vuoi aggiornamenti su Auto-proxing e configurazione del container con AspectJ inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.