目录
1、导入坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
2、创建目标接口和目标类
public interface TargetInterface {
void save();
}
@Component("Target")
public class Target implements TargetInterface {
public void save() {
System.out.println("save run....");
}
}
注:@Component("Target")注解表明交由Spring管理,id为Target
3、创建切面类(内部有增强方法)
4、将目标类和切面类的对象创建圈交给spring
5、在切面类使用注解配置织入关系
@Component("MyAspect")
@Aspect //标注为切面类
public class MyAspect {
@Before(value = "execution(public void com.itheima.anno.Target.save())")
public void before(){
System.out.println("前置增强");
}
}
注:@Aspect :标注此类为切面类,@Before(value = "execution(public void com.itheima.anno.Target.save())") :配置织入关系,此方法为前置方法,并表明了目标方法
6、在配置文件中开启组件扫描和AOP的自动代理
<!--组件扫描-->
<context:component-scan base-package="com.itheima.anno"/>
<!-- aop自动代理-->
<aop:aspectj-autoproxy/>
7、测试代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-anno.xml")
public class AnnoTest {
@Autowired
private TargetInterface target;
@Test
public void test1(){
target.save();
}
}