中恒建设职业技术培训学校网站,网站的类型及特点,深圳网站设..,网站建设招标样本我们先创建一个项目 然后引入java spring aop的依赖
然后 在src下创建目录 我这里 直接就叫 Aop了 下面创建一个User类 参考代码如下
package Aop;import org.springframework.stereotype.Component;Component
public class User {public void add(){System.out.println(import org.springframework.stereotype.Component;Component
public class User {public void add(){System.out.println(add......);}
}这个 app方法 将作为被增强方法使用
然后 我们在Aop目录下 再创建一个类 我这里叫 UserProxy 参考代码如下
package Aop;import org.springframework.stereotype.Component;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;Component
Aspect
public class UserProxy {//拆分公共切入点Pointcut(value execution(* Aop.User.add(..)))public void commonEntryPoint() {}//被增强方法执行前调用Before(value commonEntryPoint())public void before() {System.out.println(UserProxy before...);}
}这里 我们上面用Pointcut 写好了 切入点表达式 指定增强切入点 是 Aop包下 的 User类 add方法 然后 Before标准的方法 使用了这个切入点表达式 说明 UserProxy 作为增强类 对 User的add方法进行增强
然后 就是这次的重点 我们用一个配置类 来写 之前写在xml中的配置内容 在src目录下创建一个目录 我这里叫 config
参考代码如下
package config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;ComponentScan(basePackages {Aop})
EnableAspectJAutoProxy(proxyTargetClass true)
public class configAop {
}ComponentScan指定 开启注解扫描 我们写入了一个Aop 表示 会对 src目录下的Aop包进行注解扫描 找到有注解的类内容 EnableAspectJAutoProxy配置则是 开启Aspect生成代理对象
然后 我们在src下创建测试类 参考代码如下
import Aop.User;
import config.configAop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class aopText {public static void main(String args[]) {ApplicationContext context new AnnotationConfigApplicationContext(configAop.class);User user context.getBean(user, User.class);user.add();}
}这里 因为是配置类 我们 AnnotationConfigApplicationContext 就直接读类对象了
然后 获取User对象 然后调用add 因为UserProxy 中的方法指定增强add 所以 只要执行add 增强方法也会在特定时间点调用
运行结果如下 也是没有任何的问题