Re:AOP + Spring

2 respostas
marcelopaesrech

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

2 Respostas

N

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

N
Aqui estão as minhas classes e configurações.
<?xml version="1.0" encoding="UTF-8"?>
<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.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd">

	<aop:aspectj-autoproxy />
	<bean id="simpleLogger" class="example.SimpleLogger"/>
	<bean id="concatService" class="example.ConcatServiceImpl"/>
</beans>
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);
    }
}
package example;

public class ConcatServiceImpl implements ConcatService {
    public String concat(String s1, String s2) {
        return s1 + s2;
    }
}
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");
    }

}
Criado 11 de janeiro de 2012
Ultima resposta 12 de jul. de 2006
Respostas 2
Participantes 2