Spring源码分析--代理模式、工厂模式
2018-03-20 23:27
435 查看
class A{ int a; int b; public void execute(){} } //实例化以后用一个变量保存下来(匿名对象) A a = new A(); @autowire A a;//Spring 初始化,实例化(控制权) //一定要初始化才行,报空指针异常 a.execute(); //IOC容器(存的是java bean) //Web容器,用来装Servlet的 //实现依赖注入(赋值) 把 = 号右边的东西赋值给左边 @autowire InterfaceA a;//自动把它的实现类注入进来 @Resource("aaa") A b;//IOC容器中类的id为aaa对象自动注入到这里(可以区分父子类的) @autowire A a; //根据类型自动注入 //依赖链中的所有的对象,ioc容器里面初始化 实例化的先后顺序 Spring的注入方式 1、setter 2、构造方法 3、强制赋值 AOP核心思想:解耦(AOP就是定义规则,解耦的规则是切面,面向切面编程;面向规则编程) 先要把一个整体,给拆了,分别开发 等到发布的时候,再组装到一起运行 这种有规律的东西,就可以认为它就是一个固定的规则,这时候,我们就单独把这个具有一定规律的规则,单独分离出来,作为一个独立模块。 AOP的功能完全集成到了Spring事务管理、日志和其他各种特性的上下文中。 Authentication 权限认证 Logging 日志 Transactions Manager 事物 Lazy Loading 懒加载 Context Process 上下文处理 Error Handler 错误跟踪(异常捕获机制) Cache 缓存处理 spring的核心宗旨是简化开发; AOP的核心思想是解耦;
代理模式(代理模式关心的是过程,每一步操作都是有实时跟踪把控的,我都知道你在做什么)
特点: 1、执行者、被代理人(两个角色:执行者、被代理对象) 2、对于被代理人来说,这件事情是一定要做的,但是我自己又不想做或者没有时间做,找代理(注重过程,必须要做,被代理对象没时间做或者不想做(怕羞羞),不专业) 3、需要获取到被代理人的个人资料(执行者必须拿到被代理对象的个人资料(执行者持有被代理对象的引用)) 原理: 1.拿到被代理对象的引用,然后获取它的接口 2.JDK代理重新生成一个类,同时实现我们给的代理对象所实现的接口 3.把被代理对象的引用也拿到了 4.重新动态生成一个class字节码 5.然后编译 代理模式做了一件什么事情呢?----> 字节码重组。 动态代理可以做一件什么事情?可以在每个方法调用之前加一些代码,在方法调用之后再加一些代码。 AOP:事物代理(申明式事务,在哪个方法需要加事务,哪个方法不需要加事务)、日志监听。 service 方法 开启一个事务(open) 事务的执行(是由我们自己的代码完成的); 监听到是否有异常,可能需要根据异常的类型来决定这个事务是否要回滚还是继续提交。(commit/rollback) 事务要关闭(close) JDK动态代理: JDK的动态代理是通过接口来进行强制转换的; 生成以后的代理对象,可以强制转换为接口。 CGlib动态代理: CGLib的动态代理是通过生成一个被代理对象的子类,然后重写父类的方法 生成以后的对象,可以强制转换为被代理对象(也就是用自己写的类) 子类引用赋值给父类
工厂模式(工厂模式关心的是结果)
//Spring中的工厂模式 //Bean //BeanFactory(生成Bean) //单例的Bean //被代理过的Bean //最原始的Bean(原型) //List类型的Bean //作用域不同的Bean //getBean //非常的紊乱,维护困难 //解耦(松耦合开发) /实现统一管理、专业化管理 //如果没有工厂模式,小作坊,没有执行标准的 //如果买到三无产品(没有标准) //卫生监督局工作难度会大大减轻
码农就是执行标准的人 系统架构师,就是制定标准的人 不只做一个技术者,更要做一个思考者
相关文章推荐
- Spring源码分析---单例模式
- Spring源码-AOP(一)-代理模式
- Spring与代理模式和实例工厂模式的整合使用
- Java设计模式-代理模式之动态代理(附源码分析)
- Spring Redis与ActiveMQ发布订阅模式源码分析
- 电话中工厂模式和源码分析
- Android源码分析之简单工厂模式
- Spring 源码分析-----委派模式(不关心过程,只关心结果)
- Spring AOP源码分析(生成代理对象)
- Spring AOP 源码分析——创建代理对象
- Spring架构详解之Spring设计模式分析之代理模式
- spring源码分析---策略模式
- Shiro-1-源码分析一设计模式(简单工厂)
- 动态代理模式2--源码分析
- Spring中的设计模式(工厂单例代理模板适配器)
- spring源码分析,重新认识spring五(内功心法 从思想上说明 spring 常用的几种设计模式,漫谈)
- Spring源码分析----建立AopProxy代理对象和AOP拦截器的调用
- Spring AOP 源码分析 - 创建代理对象
- Android源码分析之工厂方法模式
- tomcat源码分析3—>代理模式深入分析