笔记8 AOP练习2】的更多相关文章

Spring笔记:AOP基础 AOP 引入AOP 面向对象的开发过程中,我们对软件开发进行抽象.分割成各个模块或对象.例如,我们对API抽象成三个模块,Controller.Service.Command,这很好地解决了业务级别的开发,但是对于系统级别的开发我们很难聚集.比如每一个模块需要打印日志.代码监控.异常检测等.我们只能将日志代码嵌套在各个对象上,无法关注日志本身. 为了更好地将系统系统级别的代码抽离出来,去掉和对象的耦合,就产生了AOP(面向切面).如下图,OOP是一种横向扩展,AOP…
Spring学习笔记之aop动态代理(3) 1.0 静态代理模式的缺点: 1.在该系统中有多少的dao就的写多少的proxy,麻烦 2.如果目标接口有方法的改动,则proxy也需要改动. PersonDao.java public interface PersonDao { public void savePerson(); } PersonDaoImpl.java public class PersonDaoImpl implements PersonDao{ public void save…
AOP中 @Before @After @AfterThrowing@AfterReturning的执行顺序 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result; try { //@Before result = method.invoke(target, args); //@After return result; } catch (Invocatio…
切面可以为Spring bean添加新方法. 在Spring中,切面只是实现了它们所包装bean相同接口的 代理.如果除了实现这些接口,代理也能暴露新接口的话,会怎么样 呢?那样的话,切面所通知的bean看起来像是实现了新的接口,即便 底层实现类并没有实现这些接口也无所谓. 使用Spring AOP,我们可以为bean引入新的方法. 代理拦截调用并委托给实现该方法的其他对象 需要注意的是,当引入接口的方法被调用时,代理会把此调用委 托给实现了新接口的某个其他对象.实际上,一个bean的实现被拆分…
AOP思想是将程序中的业务代码与服务代码进行分离,在运行时进行结合.比较强调程序的层次结构,是一种面向切面的编程.而在AOP实现的底层主要用到了动态代理,而动态代理又分为JDK动态代理和CGLIB动态代理,两者的区别是JDK动态代理的实现中业务类必须必须定义接口,而CGLIB没有这个约束,可以说CGLIB更强大: JDK动态代理实现示例: 1  // 业务接口定义  2  public interface IUnit {  3      void execute(String msg);  4 …
[TOC] 1. 创建并声明一个切面 首先,创建一个类,添加@Component注解使其添加到IoC容器 然后,添加@Aspect注解,使其成为一个切面 最后,在配置文件里面,使用<aop:aspectj-autoproxy></aop:aspectj-autoproxy>来使其生效 2. 使用切面的通知 切面总共有6个通知类型,其中五个常用的为:前置通知.后置通知.返回通知.异常通知.环绕通知,一个不常用的为:引入通知. 而在五个常用的通知里,环绕通知功能最为强大,可以实现前四个…
场景描述: 核心业务:举行一场古典音乐会. 周边功能:观众入场,关闭手机.落座,觉得音乐好听时鼓掌,觉都不好听则退票.(切面) 1.编写切点(切点用于准确定位应该在什么地方应用切面的通 知)----即核心业务 首先定义一个Performance接口: package concert; public interface Performance { public void perform(); } 2.定义切面,即编写Audience.java. Audience类使用@Aspect注解进行了标注.…
1. 通知(Advice)   切面的工作被称为通知.通知定义了切面是什么以及何时使用.除了描述切面要完成的工作, 通知还解决了何时执行这个工作的问题.它应该应用在某个方法被调 用之前?之后?之前和之后都调                    用?还是只在方法抛出异常时调用? Spring切面可以应用5种类型的通知: 前置通知(Before):在目标方法被调用之前调用通知功能: 后置通知(After):在目标方法完成之后调用通知,此时不会关 心方法的输出是什么: 返回通知(After-retu…
AOP 即 Aspect Oriented Program 面向切面编程 首先,在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能. 所谓的核心业务,比如登陆,增加数据,删除数据都叫核心业务 所谓的周边功能,比如性能统计,日志,事务管理等等 周边功能在Spring的面向切面编程AOP思想里,即被定义为切面 在面向切面编程AOP的思想里面,核心业务功能和切面功能分别独立进行开发 然后把切面功能和核心业务功能 "编织" 在一起,这就叫AOP 第一步:思路图 1. 功能分两大类,辅…
一.Spring IoC容器补充(1) Spring IoC容器,DI(依赖注入): 注入的方式:设值方法注入setter(属性注入)/构造子注入(构造函数传入依赖的对象)/字段注入Field(注解)/接口注入 out 装配的方式:手动装配(<property>.<constructor-arg>.@Autowired.@Resource)/自动装配(autowire="byName") 1.装配各种类型的属性 A.简单属性-value属性或者value元素 &…