基础XML配置的AOP与基于注解实现的AOP详细对比

aop思想通过动态代理,一定程度上实现了代码的解耦。我们可以将日志模块,权限校验,事物等模块,与核心的业务代码相隔离,让程序员在写代码的时候,能够更加专注于业务。

基于注解实现AOP步骤:

①将目标类与切面类都加入到ioc容器中。
目标类该用啥注解用啥,切面类通常用@Component即可。另外,记得在applicationContext.xml文件中配置包扫描。
②为切面类标注@Aspect注解,告诉Spring哪些是切面类。
③在切面类的各个通知方法中,标注注解,并配置切入点表达式,高数spring这些通知方法都何时何地执行。
④开启基于注解的AOP功能。 <aop:aspectj-autoproxy/>

以上的操作,可能是我们更加熟悉的开发方式,毕竟注解相较于配置方便很多很多。但是,xml配置也有它自有的优点,那就是功能更加完善。比如一个第三方的jar包,当我需要引用其中的一个切面类时,注解的方式就显得有些吃力了。xml配置方式就能很好的补足了这一点。
另外,重要的切面类,一般习惯放置在xml配置中,比如重要的权限验证,事物隔离等。

基于xml配置的AOP步骤:
①配置bean
所有加入到ioc容器的组件,在配置文件中使用bean标签进行管理。

<bean id="xxx1" class="xxxx1"/>

②指定切面
对应@Aspect注解,我们需要在aop名称空间下进行切面类的配置
每一个<aop:aspect>标签相当于一个@Aspect注解,属性中的ref需要填写<bean>标签中切面类的id。

<aop:config>
	<aop:aspect ref="xxx1">
	</aop:aspect>
</aop:config>

③配置通知方法
继续在第二步的<aop:aspect>标签内部配置通知方法对应的标签,与注解的命名方式几乎一模一样。method为切面类中的通知方法;pointcut为切入点表达式;returning指定返回通知的返回参数;throwing指定异常通知的异常参数。

<aop:config>
	<aop:aspect ref="xxx1">
		<aop:before method="" pointcut="">
		<aop:after method="" pointcut="">
		<aop:after-returning method="" pointcut="" returning="">
		<aop:after-throwing method="" pointcut="" throwing="">
		<aop:around method="" pointcut="">
	</aop:aspect>
</aop:config>

④开启基于注解的AOP功能。 <aop:aspectj-autoproxy/>

发布了98 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41885819/article/details/104798823