Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Auto-proxing e configurazione del container con AspectJ

L'assegnazione degli oggetti target semplificata nella configurazione del container
L'assegnazione degli oggetti target semplificata nella configurazione del container
Link copiato negli appunti

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.


Ti consigliamo anche