今天记录一下学习aspectj的一点代码
在做aspectj的代码需要引入的jar
aspectj/
aspectjlib.jar
aspectrt.jar
aspectjtools.jar
aspectweaver.jar
cglib/
cglib-2.2.2.jar
asm.jar
spring-aspectj/
spring-aspects.jar
配置文件 aop.xml
<?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-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<aop:aspectj-autoproxy />
<bean id="aspect" class="com.jimmy.aop.AspectHello" />
<bean id="hello" class="com.jimmy.aop.Hello" />
</beans>
代码
AspectHello.java
package com.jimmy.aop;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class AspectHello {
@After("execution(* com.jimmy.aop.Hello.say(..))&& args(words)")
public void aa(String words) {
System.out.println(words+" kkkk");
}
@Before("execution(* com.jimmy.aop.Hello.say(..)) && args(words, a)")
public void aa(String words, int a) {
System.out.println(a+" "+words+" kkkk");
}
}
Hello.java
package com.jimmy.aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Hello {
public void say(String words){
System.out.println("hello "+words);
}
public void say(String words, int a){
System.out.println(a + " hello "+words);
}
public static void main(String[] args){
ApplicationContext context=
new ClassPathXmlApplicationContext(new String[]{"aop.xml"});
Hello hello=(Hello)context.getBean("hello");
hello.say("jimmy");
hello.say("jimmy", 1);
}
}
运行结果:
hello jimmy
jimmy kkkk
1 jimmy kkkk
1 hello jimmy
在做aspectj的代码需要引入的jar
aspectj/
aspectjlib.jar
aspectrt.jar
aspectjtools.jar
aspectweaver.jar
cglib/
cglib-2.2.2.jar
asm.jar
spring-aspectj/
spring-aspects.jar
配置文件 aop.xml
<?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-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<aop:aspectj-autoproxy />
<bean id="aspect" class="com.jimmy.aop.AspectHello" />
<bean id="hello" class="com.jimmy.aop.Hello" />
</beans>
代码
AspectHello.java
package com.jimmy.aop;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class AspectHello {
@After("execution(* com.jimmy.aop.Hello.say(..))&& args(words)")
public void aa(String words) {
System.out.println(words+" kkkk");
}
@Before("execution(* com.jimmy.aop.Hello.say(..)) && args(words, a)")
public void aa(String words, int a) {
System.out.println(a+" "+words+" kkkk");
}
}
Hello.java
package com.jimmy.aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Hello {
public void say(String words){
System.out.println("hello "+words);
}
public void say(String words, int a){
System.out.println(a + " hello "+words);
}
public static void main(String[] args){
ApplicationContext context=
new ClassPathXmlApplicationContext(new String[]{"aop.xml"});
Hello hello=(Hello)context.getBean("hello");
hello.say("jimmy");
hello.say("jimmy", 1);
}
}
运行结果:
hello jimmy
jimmy kkkk
1 jimmy kkkk
1 hello jimmy