Spring 2.0 @AspectJ support

Não é de hoje que o Spring framework já está consagrado no mercado, mas não poderia ser diferente o framework é muito completo e flexível. Com o Spring Framework 2.0 podemos usar AOP(no spring 2.0 é aspectJ) com apenas uso de annotations.



Vejam o exemplo:


package org.diegopacheco.springaop.aop;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class SystemAop {

private final Log log = LogFactory.getLog(getClass());

@Before("execution(* org.diegopacheco.springaop.model.service.IPessoaService.*(..))")
public void initService(){
log.info("Iniciando a execução do Service ");
}

@Before("execution(* org.diegopacheco.springaop.model.dao.IPessoaDao.*(..))")
public void initDao(){
log.info("Iniciando a execução do Dao ");
}

@After("execution(* org.diegopacheco.springaop.model.service.IPessoaService.*(..))")
public void finishService(){
log.info("Finalizado a execução do Service ");
}

@After("execution(* org.diegopacheco.springaop.model.dao.IPessoaDao.*(..))")
public void finishDao(){
log.info("Finalizado a execução do Dao ");
}

}



no xml do Spring

...

<!-- Para abilitar o uso de @Aspect -->
<aop:aspectj-autoproxy/>

<bean
id="systemAop"
class="org.diegopacheco.springaop.aop.SystemAop"
/>


** Para o AOP funcionar a classe deve estar anotada com @Aspect e essa classe tem que estar obrigatoriamente definida como um bean do Spring. Com as annotations @Before e @After podemos definir que ele irá executar antes(@Before) e depois(@After). Com o point-cut "execution(* org.diegopacheco.springaop.model.service.IPessoaService.*(..))" estou dizendo para o Spring: Intercepte todas as invocações a qualquer classe que implemente a interface:
org.diegopacheco.springaop.model.service.IPessoaService não interesando os parametros ou qual metodo da interface. Quando o Spring 'bate' esse point-cut ele chama a execução do metodo anotado. Esse mecanismo já existia antes porem era todo definido por XML e agora tem suporte a annotatiins. Para maiores informações e acesso a mais recursos das annotations de aspectos do Spring vejam: spring ref aop.

Eras isso, rotundos.

Popular posts from this blog

Telemetry and Microservices part2

Installing and Running ntop 2 on Amazon Linux OS

Fun with Apache Kafka