Spring Aop实例(XML形式)

     AOP(Aspect-OrientedProgramming)面向方面编程,与OOP完全不同,使用AOP编程系统被分为方面或关注点,而不是OOP中的对象。

 

 AOP的引入

 在OOP面向对象的使用中,无可避免的会出现代码重复,而且使用面向对象的编程方式,这种重复无法避免,比如用户权限判断中,根据相应的权限执行相应的方法;在servlet中设置编码格式时,同样相同的代码出现很多次,而且还根业务无关,很容易忘记写,结果运行的时候就出现乱码拉。这种重复代码不仅使编码麻烦,而且还不容易维护。而AOP则将这些代码整理起来,将解决某个切面问题的代码单独的放在某个模块中,然后再织入到程序中。

AOP中的术语




  Aspect:横切面的功能抽象出类,或接口, AOP编程重要的就是识别出横切面功能。

       方面,类似于字符编码功能) 

 Advice: 横切面功能的具体实现,需要根据实际的情况分析,如果在目标对象操作之前是 before在操作之后,就是 after advice。

       增强,类似于字符编码过滤器

 Pointcut:切入点,描述横切面功能应用的限制,不是所有的流程都需要,那些可以使用的地方就是切入点

       类似于过滤器的匹配规则 /*

 Joinpoint: 连接点,或指组件加入流程的时机,比如设置属性,调用方法,等,Spring只支持方法调用的连接点,而其他的一些框架支持属性的连接点如:AspectJ

       类似于过滤器的过滤规则 REQUESTFORWARD

 Weave: 缝合,将组件应用到业务流程中的这个过程,叫缝合或织入。

       类似于将过滤器配置到web.xml文件的过程

 Proxy,代理,在实现上,SpringAOP其实就是使用JDK的动态代理(使用接口的方式完成代理操作),也可以使用CGLIB(使用继承的方式完成代理操作)。

 Target目标,业务操作的实际对象


实例(通过XML形式)

1. AudioAop:切面类

@Service("audioAop")
public class AudioAop {
	
	public void before() {
		System.out.println("before......The audience is taking their seats.");
	}

	public void after() {
		System.out.println("after......The audience is turning off their cellphones");
	}

}

2. Performer:目标对象

@Service
public class Performer {
	
	private static Logger logger = Logger.getLogger(UserController.class);

	public void perform() throws Exception {
		logger.info("perform...........................");
	}
}
3. ApplicationContext:Spring配置文件
		<aop:aspect ref="audioAop">
            <aop:pointcut id="performance" expression="execution(* com.cn.test.aop.pointcut.Performer.perform(..))"/>
            
            <aop:before pointcut-ref="performance" method="before"/>
            <aop:after pointcut-ref="performance" method="after"/>
        </aop:aspect>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值