首页 理论教育 Java服务端研发知识图谱:基于@AspectJ的AOP实践

Java服务端研发知识图谱:基于@AspectJ的AOP实践

时间:2023-11-22 理论教育 版权反馈
【摘要】:Spring除了支持Schema方式配置AOP,还支持注解方式,即使用@AspectJ风格的切面声明。为了支持@AspectJ,需要在Spring配置文件中使用如下配置:<aop:aspectj-autoproxy/>具体使用流程:在配置文件中添加<aop:aspectj-autoproxy/>配置。创建Bean,使用@Aspect注解修饰该类。创建方法,使用@Before、@After、@Around等进行修饰,在注解中写上切入点的表 达式。这里演示通过AOP注解的方式实现在调用ProductServcie中addProduct方法的前后打印日志。--指定要扫描的包,如果有多个可以用逗号隔开--><context:component-scan base-package="com.javadevmap"></context:component-scan><aop:aspectj-autoproxy/><!

Java服务端研发知识图谱:基于@AspectJ的AOP实践

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特性即可在方法的前后增加一些其他业务逻辑。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈