基于Annotation的Spring AOP: @Before
来源:互联网 发布:三维家软件下载 编辑:程序博客网 时间:2024/06/07 06:26
AspectJ 允许使用Annotation定义切面、切入点和增强处理,而 Spring框架则可识别并根据这些Annotation来生成AOP代理。Spring只是使用了和AspectJ一样的注解,并没有使用AspectJ的编译器和织入器,底层依然使用的是 Spring AOP,依然是在运行时动态生成AOP代理,并不依赖于AspectJ的编译器或者织入器。
为了启用Spring对@AspectJ切面配置的支持,并保证Spring容器中的目标Bean被一个或多个切面自动增强,必须在配置文件中加如下代码:
<aop:aspectj-autoproxy/>为了在Spring应用中启动@AspectJ支持,还需要添加 aspectjrt.jar 和aspectjweaver.jar到工程lib目录下。
Person.java :
public interface Person {public String sayHello(String name);public void eat(String food);}Chinese.java :
@Componentpublic class Chinese implements Person {@Overridepublic void eat(String food) {System.out.println("我正在吃:"+food);}@Overridepublic String sayHello(String name) {return name+"Hello,Spring AOP";}}BeforeAdviceTest.java :
/** * 定义一个切面 * @author Administrator * */@Aspectpublic class BeforeAdviceTest {@Before("execution(* com.bean.*.*(..))")public void authority(){System.out.println("模拟执行权限检查");}}bean.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" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <context:component-scan base-package="com.bean"> <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/> </context:component-scan> <aop:aspectj-autoproxy/> </beans>Test.java :
public class Test {public static void main(String[] args) {ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");Person p=(Person) ctx.getBean("chinese");System.out.println(p.sayHello("张三"));p.eat("西瓜");}}运行控制台输出:
- 基于Annotation的Spring AOP: @Before
- 基于Annotation的Spring AOP: @AfterReturning
- 基于Annotation的Spring AOP: @AfterThrowing
- 基于Annotation的Spring AOP: @After
- 基于Annotation的Spring AOP: @Around
- Spring基于annotation的AOP(AspectJ)
- Spring AOP 的引入(三 基于annotation)
- Spring AOP功能--基于Annotation的方式
- 基于 Annotation 拦截的 Spring AOP 权限验证方法
- 基于 Annotation 拦截的 Spring AOP 权限验证方法
- 基于 Annotation 拦截的 Spring AOP 权限验证方法
- 基于 Annotation 拦截的 Spring AOP 权限验证方法
- 基于 Annotation 拦截的 Spring AOP 权限验证方法
- Spring中的AOP—基于Annotation的配置方式
- Spring中AOP基于Annotation的零配置(1)
- Spring中AOP基于Annotation的零配置(2)
- 基于Spring的AOP实现自定义annotation操作日志
- Spring AOP技术(基于AspectJ)的Annotation开发
- 任意长度两个正整数相加
- Dalvik虚拟机简介及架构级移植优化方向
- 调用android系统的图库以及截图来让用户自定义界面背景
- 游戏编程中的寻路算法研究
- 反编译APK文件的三种方法
- 基于Annotation的Spring AOP: @Before
- VC 编辑框垂直居中和字体颜色设置
- 噩梦遇地震,醒后忆岁月
- mmc旅行商人问题
- 为适合自己的客户提供更优质的网站开发服务
- Initializing OpenGL 4.0
- 基于Annotation的Spring AOP: @AfterReturning
- 最近换QQ了1085992075,老朋友们可以联系这个
- Vim search words