同理一样的做法,将配置文件的标签变为注解
①创建目标接口和目标类(内部有切点)
public interface TargetInterface {
void save();
}
@Component("target")
public class Target implements TargetInterface{
public void save() {
System.out.println("iu给我布置了科学家不错");
}
}
②创建切面类(内部有增强方法)
③将目标类和切面类的对象创建权交给 spring
④在切面类中使用注解配置织入关系
@Component("myAspect")
@Aspect
public class MyAspect {
@Before("MyAspect.myPoint()")
// @Before("myPoint()")
public void before(){
System.out.println("前置增强。。。。");
}
@Pointcut("execution(* com.trc.anno.*.*(..))")
public void myPoint(){}
}
⑤在配置文件中开启组件扫描和 AOP 的自动代理
<?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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
">
<!--组件扫描-->
<context:component-scan base-package="com.trc.anno"/>
<!--aop自动代理-->
<aop:aspectj-autoproxy/>
</beans>
⑥测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-anno.xml")
public class AnnoTest {
@Autowired
private TargetInterface target;
@Test
public void test1(){
target.save();
}
}
注解: