此文章演示为纯注解形式,如需注解形式请参考文章
1:引入AOP依赖
<!--Spring AOP-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
2:创建一个java代理类
@Component// 将对象交给IOC容器去实例化
@Aspect// 声明当前类是一个切面
public class LogCut {
//这里表示代理了 org.example包及子包下所有内容
@Pointcut("execution(* org.example..*.*(..))")
public void cut(){}
/**
* 声明前置通知 并将通知应用到定义的切入点上
* 目标类方法执行前 执行该通知
*
*/
@Before(value = "cut()")
public void before() {
System.out.println("前置通知1.....");
}
}
3:创建一个被代理的java类
@Component
public class People implements Serializable {
private String name;
private Date bir;
//省略get set 构造器等方法
public void init(){
System.out.println("一个新的人类出生了");
}
public void destory(){
System.out.println(name+"他走了");
}
}
4:设置SpringAOP配置类
@Configuration//此注解表示当前类是一个配置类
@ComponentScan(basePackages = {"org.example"}) //注解:表示扫描包 属性设置扫描包的范围
@EnableAspectJAutoProxy(exposeProxy = true)//开启AOP代理
public class SpringAop {
}
5:代码测试
@Test
public void test01(){
ApplicationContext ann = new AnnotationConfigApplicationContext(SpringAop.class);
People people01 = ann.getBean("people", People.class);
people01.setName("zhangsan");
System.out.println("set设置名字");
}