Spring除了支持Schema方式配置AOP,还支持注解方式,即使用@AspectJ风格的切面声明。为了支持@AspectJ,需要在Spring配置文件中使用如下配置:
<aop:aspectj-autoproxy/>
具体使用流程:
(1)在配置文件中添加<aop:aspectj-autoproxy/>配置。
(2)创建Bean,使用@Aspect注解修饰该类。
(3)创建方法,使用@Before、@After、@Around等进行修饰,在注解中写上切入点的表 达式。
这里演示通过AOP注解的方式实现在调用ProductServcie中addProduct方法的前后打印日志。定义一个AspectjBean类,具体如下:
在Spring配置文件中增加如下核心配置:
<!--指定要扫描的包,如果有多个可以用逗号隔开-->
<context:component-scan base-package="com.javadevmap"></context:component-scan>
<aop:aspectj-autoproxy/>
<!--aspect通知-->
<bean id="aspectJ"class="com.javadevmap.service.AspectjBean"></bean> 为了演示抛出异常的通知,在ProductService中增加doThrowException方法:(www.xing528.com)
编写测试代码如下:
运行结果如下:
beforeAdvice()-->Going to exec addProduct.
execute addProduct method()
添加商品id=4001,商品名称为java dev map,成功!
afterAdvice()-->addProduct has been done.
afterReturningAdvice()-->Returning
beforeAdvice()-->Going to exec addProduct.
Exception raised
afterAdvice()-->addProduct has been done.
AfterThrowingAdvice-->There has been an exception:java.lang.IllegalArgumentException
通过前面的例子,可见在未修改自己的业务类的前提下,利用Spring的AOP特性即可在方法的前后增加一些其他业务逻辑。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。