Spring之AOP的两种配置方式
来源:互联网 发布:淘宝联盟省钱购买 编辑:程序博客网 时间:2024/05/19 23:58
第一种:注解配置AOP
注解配置AOP(使用 AspectJ 类库实现的),大致分为三步:
1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Before, @AfterReturning,@After,@AfterThrowing,@Around).
2. 开发需要被拦截的类。
3. 将切面配置到xml中,当然,我们也可以使用自动扫描Bean的方式。这样的话,那就交由Spring AoP容器管理。
另外需要引用 aspectJ 的 jar 包: aspectjweaver.jar aspectjrt.jar
@Aspect@Componentpublic class LogInterceptor { @Pointcut("execution(public * com.oumyye.service..*.add(..))") public void myMethod(){}; /*@Before("execution(public void com.oumyye.dao.impl.UserDAOImpl.save(com.oumyye.model.User))")*/ @Before("myMethod()") public void before() { System.out.println("method staet"); } @After("myMethod()") public void after() { System.out.println("method after"); } @AfterReturning("execution(public * com.oumyye.dao..*.*(..))") public void AfterReturning() { System.out.println("method AfterReturning"); } @AfterThrowing("execution(public * com.oumyye.dao..*.*(..))") public void AfterThrowing() { System.out.println("method AfterThrowing");}
<context:annotation-config /> <context:component-scan base-package="com.oumyye"/> <!-- 自动扫描 --> <aop:aspectj-autoproxy/> <!-- 要添加本行 -->
第二种:xml配置aop
实例同上:只是配置文件不同
<context:annotation-config /> <context:component-scan base-package="com.oumyye"/> <bean id="logInterceptor" class="com.oumyye.aop.LogInterceptor"></bean> <aop:config> <aop:pointcut expression="execution(public * com.oumyye.service..*.add(..))" id="servicePointcut"/> <aop:aspect id="logAspect" ref="logInterceptor"> <aop:before method="before" pointcut-ref="servicePointcut" /> </aop:aspect> </aop:config>
下面的是Spring的配置标签,beans里面几个重要的属性:
xmlns:
是默认的xml文档解析格式,即spring的beans。地址是http://www.springframework.org/schema/beans。
通过设置这个属性,所有在beans里面声明的属性,可以直接通过<>来使用,比如<bean>
等等。
xmlns:xsi:
是xml需要遵守的规范,通过URL可以看到,是w3的统一规范,后面通过xsi:schemaLocation来定位所有的解析文件。xmlns:aop:
这个是重点,是我们这里需要使用到的一些语义规范,与面向切面AOP相关。xmlns:tx:
Spring中与事务相关的配置内容。
一个XML文件,只能声明一个默认的语义解析的规范。
例如上面的xml中就只有beans一个是默认的,其他的都需要通过特定的标签来使用,比如aop,它自己有很多的属性,如果要使用,前面就必须加上aop:xxx才可以。比如上面的aop:config。
类似的,如果默认的xmlns配置的是aop相关的语义解析规范,那么在xml中就可以直接写config这种标签了。
配置案例
<bean id="userManager" class="com.tgb.aop.UserManagerImpl"/> <bean id="xmlHandler" class="com.tgb.aop.XMLAdvice" /> <aop:config> <aop:aspect id="aspect" ref="xmlHandler"> <aop:pointcut id="pointUserMgr" expression="execution(* com.tgb.aop.*.find*(..))"/> <aop:before method="doBefore" pointcut-ref="pointUserMgr"/> <aop:after method="doAfter" pointcut-ref="pointUserMgr"/> <aop:around method="doAround" pointcut-ref="pointUserMgr"/> <aop:after-returning method="doReturn" pointcut-ref="pointUserMgr"/> <aop:after-throwing method="doThrowing" throwing="ex" pointcut-ref="pointUserMgr"/> </aop:aspect> </aop:config>
使用xml可以对aop进行集中配置。很方便而简单。可以对所有的aop进行配置,当然也可以分开到单独的xml中进行配置。当需求变动时,不用修改代码,只要重新配置aop,就可以完成修改操作。
参考博客:
http://www.cnblogs.com/oumyye/p/4480196.html
http://blog.csdn.net/flysun3344/article/details/51679956
- Spring之AOP的两种配置方式
- Spring AOP 的两种配置方式
- spring aop 两种配置方式
- spring aop两种配置方式
- Java Spring AOP的两种配置方式
- Java Spring AOP的两种配置方式
- Java Spring AOP的两种配置方式
- spring aop常用的两种配置方式
- Spring系列之AOP实现的两种方式
- Spring AOP原理 AOP两种配置方式
- Spring Aop的两种方式
- Spring AOP的两种实现方式
- Spring AOP的两种实现方式
- Spring AOP的两种代理方式
- java框架篇---spring aop两种配置方式(1)
- java框架篇---spring aop两种配置方式
- java框架篇---spring aop两种配置方式(1)
- java框架篇---spring aop两种配置方式
- 对于nose框架中class级别的setUp和tearDown函数的一点理解
- PAT (Advanced) 1016. Phone Bills (25)
- linux网络编程中的字节序转换
- spring引入式整合hibernate.cfg.xml报错Invalid property 'hibernate' of bean class c3p0 ComboPooleDataSource
- HDU 5245
- Spring之AOP的两种配置方式
- Apache Beam简介
- how 2 make screen shot for app
- 快用markdown写一篇博客吧
- 【总结】公钥加密私钥解密/私钥加密公钥机密验证
- python3[爬虫实战] 使用selenium,xpath爬取京东手机(上)
- usaco1.1你的飞碟在这儿
- 游戏开发流程
- poj 1273 Drainage Ditches【最大流 dinic】