AOP
Aspect注解
user类
@Component
public class User {
public void add(){
System.out.println("user add....");
}
}
为user类增加增强方法的类1
@Component
@Aspect
@Order(3)
public class UserProxy {
@Pointcut(value = "execution(* com.jh.spring5.aopanno.User.add(..))")
public void pointdemo(){
}
@Before(value = "pointdemo()")
public void before(){
System.out.println("userproxy before....");
}
}
为user类增加增强方法的类2
@Component
@Aspect
@Order(2)
public class PersonProxy {
@Before(value = "execution(* com.jh.spring5.aopanno.User.add(..))")
public void before(){
System.out.println("personproxy before");
}
}
测试类
public class TestAop {
@Test
public void testAopAnno() {
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
User user = context.getBean("user", User.class);
user.add();
}
@Test
public void testAopAnno2() {
ApplicationContext context =
new AnnotationConfigApplicationContext(ConfingAop.class);
User user = context.getBean("user", User.class);
user.add();
}
}
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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<context:component-scan base-package="com.jh.spring5.aopanno"></context:component-scan>
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</beans>
完全注解
@Configurable
@ComponentScan(basePackages = {"com.jh"})
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class ConfingAop {
}