Bonjour à tous,
Je me retrouve avec un petit problème de Spring/AspectJ et j'aurai besoin des lumières d'un gentil collègue de développez.net

Je m'explique, j'ai 2 projets (les deux utilisent Maven 3.1.1 et Spring 3.0.5 et AspectJ 1.6.11) :

Le premier est juste un projet contenant une annotation (target=Method) et un aspect (qui pointe sur cette annotation)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@Aspect
@Component(value = "loggingAspect")
@Scope(value = "prototype")
public class LoggingAspect {
 
	@Pointcut("execution(* *.*(..))")
	public void allMethods() {
 
	}
 
        //Note : C'est un aspect de test qui ne fait pas grand chose, juste afficher sur la console en entrée et sortie de l'aspect.
 
	@Around(value = "allMethods() && @annotation(com.test.annotation.Log)")
	public Object around(final ProceedingJoinPoint joinPoint) {
		try {
			System.out.println("start aspect");
			final Object o = joinPoint.proceed();
			System.out.println("end aspect");
			return o;
		} catch (final Throwable t) {
			return null;
		}
	}
 
}
Dans ce même projet, je déclare un fichier de contexte Spring avec ces deux lignes pour déclarer mon aspect :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<context:component-scan base-package="com.test" />
<aop:aspectj-autoproxy/>

Pour le deuxième projet, j'inclus seulement le fichier de contexte du 1er projet et j'ai créé un service bidon pour tester tout ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Component(value = "testService")
public class TestService implements ITestService {
 
	@Log
	public TestOut premiereMethode(final TestIn in) {
		final TestOut out = new TestOut();
		secondeMethode(in.getTestString());
		return out;
	}
 
	@Log
	public void secondeMethode(final String param) {
		System.out.println(param);
	}
}
Ce service est chargé par Spring et la méthode "premiereMethode" est appelée, l'aspect est appelé correctement, il m'affiche "Start aspect" et lors de l'appel de la "secondeMethode", il est censé déclencher l'aspect à nouveau et rien ne se passe, il affiche le param dans la seconde méthode, ressort et affiche le "End aspect" de la 1ère méthode.

Est-ce quelqu'un a une idée du "pourquoi" de ce comportement ? Est-ce un comportement normal ? Ais-je oublier quelque chose?
J'avoue que je suis un petit peu perdu avec toutes les docs que l'on trouve sur AspectJ, SpringAOP, etc. Si quelqu'un pouvait au moins me guider, ça serait le bonheur.

Merci d'avance. N'hésitez pas si vous avez besoin de précisions sur mes projets, etc.
MattU