Bonjour,

J'essaie d'utiliser les fonctionnalités de Spring (version 2.5) permettant la programmation par aspects mais quelque chose semble m'échapper. J'arrive parfaitement à faire des aspects avec l'API AspectJ mais je n'arrive pas à utiliser les aspects configuré via XML.

J'ai essayé ici de faire un exemple simple dont le but est de logger la fonction doIt.

Jars dans mon projet :
- spring.jar
- commons-loggings.jar
- aspectjweaver.jar

Mon unique classe :
- doIt : la fonction a loggué.
- log : l'aspect qui sera utilisé pour loggé ma fonction doIt.
- main : permet d'initialiser spring et de lancer la fonction doIt.

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
 
public class Logger {
	public void doIt() {
		System.out.println("DoIt");
	}
 
	public void log() {
		System.out.println("Log!");
	}
 
	public static void main(String args[]) {
		ClassPathResource resource = new ClassPathResource("applicationContext.xml");
		XmlBeanFactory factory = new XmlBeanFactory(resource);
		Logger logger = (Logger)factory.getBean("logger");
		logger.doIt();
	}
}
Mon fichier de configuration :
- logger : le bean référençant mon unique classe.
- pointcut pour la fonction doIt.
- before aspect utilisant la fonction log de mon unique classe Logger.

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
 
<?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-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
 
	<bean id="logger" class="Logger"/>
	<aop:config>
		<aop:pointcut id="doItOperation" expression="execution(* doIt(..))"/>
		<aop:aspect ref="logger">
			<aop:before pointcut-ref="doItOperation" method="log"/>
		</aop:aspect>
	</aop:config>
</beans>
Merci.