Tem um tutorial interessante a respeito que mostra uma implementação mais simples, sem a necessidade de atrelar as anotações de aspectos com o seu código fonte.
Dá uma olhada http://marcelopaesrech.blogspot.com/2012/01/aop-programacao-orientada-aspectos-e-um.html
Pessoal,
Estou pesquisando exemplo simples de AOP com Spring.
Algo como: chamar um método e por AOP, chamar um método de outra classe antes e depois da execução do primeiro método. Tenho procurado por exemplos utilizando Annotations e não tenho visto.
Se alguém tiver links, ou exemplos, por favor, me avise.
Abrçs
Aqui estão as minhas classes e configurações.
[code]<?xml version="1.0" encoding="UTF-8"?>
<aop:aspectj-autoproxy />
<bean id="simpleLogger" class="example.SimpleLogger"/>
<bean id="concatService" class="example.ConcatServiceImpl"/>
[/code]
[code]package example;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
/**
*
*/
@Aspect
public class SimpleLogger {
private static Log log = LogFactory.getLog(SimpleLogger.class);
/**
* @param s
*/
@Before (value="execution(* example..*Service.*(..)) and args(s1,s2)")
public void logOneString(String s) {
log.info("string=" + s);
}
public void logTwoStrings(String s1, String s2) {
log.info("string1=" + s1 + ",string2=" + s2);
}
}[/code]
[code]package example;
public class ConcatServiceImpl implements ConcatService {
public String concat(String s1, String s2) {
return s1 + s2;
}
}[/code]
[code]package example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("example/simpleLoggerContext.xml");
ConcatService concatService = (ConcatService) context.getBean("concatService");
concatService.concat("some", "thing");
}
}[/code]