Aspectj e pegando methods privados ou internos

Eu configureeg AspectJ com Spring e funciona bem quando “pegar” methods públicos chamados de fora da class. Agora eu quero fazer algo assim:

public class SomeLogic(){ public boolean someMethod(boolean test){ if(test){ return innerA(); } else { return innerB(); } } private boolean innerA() {// some logic} private boolean innerA() {// some other logic} } 

SomeLogic é um SpringBean. Os methods innerA () e innerB () podem ser declarados como privados ou públicos – o método someMethod () é chamado de uma ação do Struts. É possível pegar com AspectJ os methods innerA () ou innerB () chamados de someMethod ()?

Minha configuração (baseada em XML):

              

Sim, é fácil pegar methods privados com o AspectJ.

Um exemplo que imprime uma frase antes de todos os methods privados:

  @Pointcut("execution(private * *(..))") public void anyPrivateMethod() {} @Before("anyPrivateMethod()") public void beforePrivateMethod(JoinPoint jp) { System.out.println("Before a private method..."); } 

Se você estiver familiarizado com o Eclipse, recomendo desenvolver o AspectJ com STS ou apenas instalar o plugin AJDT .

Mais informações sobre os resources do Spring AOP podem ser encontradas na documentação de referência do Spring aqui .

Intereting Posts