《Java从入门到放弃》入门篇:spring中AOP的配置方式
2017-08-03 12:40
821 查看
spring中最核心的两个东东,一个IOC,一个AOP。
AOP(Aspect-OrientedProgramming)面向方面编程,也可以叫面向切面编程。
从一个新人的角度可以这样来理解:一般软件中的功能,我们可以分为两大类,一类是业务功能,一类是系统功能。
业务功能是指这个软件必须要用到的,没有的话客户就不给钱的。比如淘宝APP,如果你只能在上面浏览商品而不能购物,那就说明业务功能太监了···。
系统功能主要是指与业务无关,没有这块内容也不影响软件使用的。比如日志管理、权限处理等。
AOP主要用来做什么呢?就是用来很灵活的把系统功能配置到业务功能中去。比如这个博客系统,最开始为了赶进度,没有做相应的日志系统,同时游客也可以自由评论。现在已经上线后,需要对用户的操作都做日志记录,同时只允许登录用户访问。这就可以使用AOP来达到我们的目的。如下图所示:
Spring比较常用的增强
MethodBeforeAdvice:前置增强,表示在目标方法执行前实施增强。
AfterReturningAdvice:后置增强,表示在目标方法执行后实施增强。
MethodInterceptor:环绕增强,表示在目标方法执行前后实施增强。
ThrowsAdvice:抛出异常增强,表示在目标方法抛出异常后实施增强。
IntroductionInterceptor:引介增强,表示在目标类中添加一些新的方法和属性。
感觉解释这些概念真是费脑细胞 - -,还是直接来看代码吧。
接下来,我们完成一个简单案例:摄像头监控员工的动作(工作、打游戏、睡觉)。实现步骤如下:
1.1)创建员工类,包含三个方法(工作、打游戏、睡觉)
1.2)创建三星摄像头类,实现前置增强来监控
1.3)在spring配置文件中注入员工对象和摄像头对象
1.4)调用员工的三个方法,并查看显示结果(注意是得到的代理对象Bean)
接下来,我们再配置一个后置增强,对于不工作的行为进行记录。代码如下,请Look:
1.5)添加华为摄像头类,实现了后置增强
1.6)修改spring配置文件,注入华为摄像头对象,并修改代理,加入后置增强
1.7)继续调用员工的方法(Test类的代码不变)并查看显示结果
可以发现,后置增强因为使用了正则来匹配Employee中的所有以play开头的方法,所以只对play开头的方法进行增强。
最最最最最后,还有更简单的办法,使用注解的方式来实现增强···,这种方式超级简单,推荐使用!!!
1.8)再次创建一个前置增强(注解方式实现),让员工在执行各种行为前喊一句:“毛主席万岁!”
1.9)在配置文件中注入喊口号对象,并开启自动代理注入(注意修改beans,引入AOP功能)
1.10)修改getBean,直接得到“李大爷”对象(千万不要得到代理对象),并运行看结果
好了,spring中的AOP入门就介绍到这儿,各位小伙伴再自己试试吧···
AOP(Aspect-OrientedProgramming)面向方面编程,也可以叫面向切面编程。
从一个新人的角度可以这样来理解:一般软件中的功能,我们可以分为两大类,一类是业务功能,一类是系统功能。
业务功能是指这个软件必须要用到的,没有的话客户就不给钱的。比如淘宝APP,如果你只能在上面浏览商品而不能购物,那就说明业务功能太监了···。
系统功能主要是指与业务无关,没有这块内容也不影响软件使用的。比如日志管理、权限处理等。
AOP主要用来做什么呢?就是用来很灵活的把系统功能配置到业务功能中去。比如这个博客系统,最开始为了赶进度,没有做相应的日志系统,同时游客也可以自由评论。现在已经上线后,需要对用户的操作都做日志记录,同时只允许登录用户访问。这就可以使用AOP来达到我们的目的。如下图所示:
Spring比较常用的增强
MethodBeforeAdvice:前置增强,表示在目标方法执行前实施增强。
AfterReturningAdvice:后置增强,表示在目标方法执行后实施增强。
MethodInterceptor:环绕增强,表示在目标方法执行前后实施增强。
ThrowsAdvice:抛出异常增强,表示在目标方法抛出异常后实施增强。
IntroductionInterceptor:引介增强,表示在目标类中添加一些新的方法和属性。
感觉解释这些概念真是费脑细胞 - -,还是直接来看代码吧。
接下来,我们完成一个简单案例:摄像头监控员工的动作(工作、打游戏、睡觉)。实现步骤如下:
1.1)创建员工类,包含三个方法(工作、打游戏、睡觉)
接下来,我们再配置一个后置增强,对于不工作的行为进行记录。代码如下,请Look:
1.5)添加华为摄像头类,实现了后置增强
可以发现,后置增强因为使用了正则来匹配Employee中的所有以play开头的方法,所以只对play开头的方法进行增强。
最最最最最后,还有更简单的办法,使用注解的方式来实现增强···,这种方式超级简单,推荐使用!!!
1.8)再次创建一个前置增强(注解方式实现),让员工在执行各种行为前喊一句:“毛主席万岁!”
好了,spring中的AOP入门就介绍到这儿,各位小伙伴再自己试试吧···
相关文章推荐
- 《Java从入门到放弃》框架入门篇:spring中AOP的配置方式
- Java Spring AOP的两种配置方式
- java框架篇---spring aop两种配置方式
- java框架篇---spring aop两种配置方式(1)
- java框架篇---spring aop两种配置方式
- java框架篇---spring aop两种配置方式
- Java Spring AOP的两种配置方式
- 《Java从入门到放弃》框架入门篇:使用注解的方式配置hibernate映射关系
- 《Java从入门到放弃》入门篇:使用注解的方式配置hibernate映射关系
- Java Spring AOP的两种配置方式
- java框架篇---spring aop两种配置方式
- Java Spring AOP的两种配置方式
- java框架篇---spring aop两种配置方式
- Java Spring AOP的两种配置方式
- java框架篇---spring aop两种配置方式(1)
- Java程序员从笨鸟到菜鸟之(七十四)细谈Spring(六)spring之AOP基本概念和配置详解
- Spring入门Blog[九、Spring Aop 用xml的方式实现]
- spring aop的使用(注解方式以及基于xml配置方式)
- Spring---->采用静态配置文件方式实现AOP
- Java程序员从笨鸟到菜鸟之(七十四)细谈Spring(六)spring之AOP基本概念和配置详解