spring思想注入依赖学习笔记

spring思想注入依赖学习笔记

ID:11417339

大小:188.50 KB

页数:12页

时间:2018-07-11

spring思想注入依赖学习笔记_第1页
spring思想注入依赖学习笔记_第2页
spring思想注入依赖学习笔记_第3页
spring思想注入依赖学习笔记_第4页
spring思想注入依赖学习笔记_第5页
资源描述:

《spring思想注入依赖学习笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本人总结了一些ssh常见的面试题例举如下强调在回答的时候不要光回答概念,要思维扩散性的讲些相关的东西spring的优点?1.降低了组件之间的耦合性,实现了软件各层之间的解耦2.可以使用容易提供的众多服务,如事务管理,消息服务等3.容器提供单例模式支持4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能5.容器提供了众多的辅助类,能加快应用的开发6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等7.spring属于低侵入式设计,代码的污染极低8.独立于各种应用服务器9.spring的DI机制降低了业务对象替换的复杂性10.

2、Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部什么是DI机制?依赖注入(DependecyInjection)和控制反转(InversionofControl)是同一个概念,具体的讲:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者因此也称为依赖注入。spring以动态灵活的方式来管理对象,注入的两种方式,设置注入和构造注入。设置注入的优点:直观,自然

3、构造注入的优点:可以在构造器中决定依赖关系的顺序。什么是AOP?面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面1.面向切面编程提供声明式事务管理2.spring支持用户自定义的切面面向切面编程(aop)是对面向对象编程(oop)的补充,面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象,是对应用执行过程中的步骤进行抽象,,从而获得步骤之间的逻辑划分。aop框架具有的两个特征:1.各个步骤之间的良好

4、隔离性2.源代码无关性依赖注入(DI)依赖注入(DI),是spring容器实现的基础,在spring-core模块中实现的。所谓DI,就是指对象是被动接受依赖类而不是自己主动去找,换句话说就是指对象不是从容器中查找它依赖的类,而是在容器实例化对象的时候主动将它依赖的类注入给它。下面举一个形象的例子:1.class B{  2.   private A a;  3.   public void setA(A a){  4.      this.a=a;  5.   }  6.}  7.  8.class A{  9.} 显然,此时B是依赖与A。我们不妨将A比作牛,将B比作人,人吃牛是

5、显然的事实。当用户要利用B的时候,必须先要指定他所依赖的A的对象。这样代码模块之间就具有很强的耦合。通过依赖注入的方式,能够使B对A的依赖关系对代码人员变得松散。我们将A和B对象都交给容器来管理,通过配置文件告诉B该依赖的A,这样代码中的依赖关系被移到了配置文件中,通过对配置文件的管理,很容易编写低耦合的代码。对于依赖注入的几种实现参考DependencyInjection。但是,目前在学术界争论的焦点在于:DI究竟能不能给程序带来解耦。众所周知,封装和依赖是面向对象编程思想中两个很重要的概念。编写高内聚低耦合的代码是OOP编程的目标。但是,这其中本来就存在着互相矛盾。所谓高内聚,

6、就是通过封装之后,是被封装的各个模块(这里一般是一个类)内部的功能功能相关性、依赖性、协作性等高。此时,我们要做的就是对模块按照上述标准进行分解,直到满意为止。但是,什么时候才是一个尽头?当我们在不断的对模块进行分解时,被分解的模块之间的耦合就不断的增强。此时,我们就会反过来想,低耦合就是不断降低模块之间的关系,没有关系最好。于是我们要做的就是模块合组,将耦合关系强的模块组合在一起。那怎么样才能做到最好?那不就是用一个统一的模块来表示整个需要描述的系统,废话那不就等于什么都没有做。说了这么多,我要说的就是要在内聚和耦合之间进行权衡,找到一个恰当的平衡点。下面切入正题,所谓耦合,简单

7、的理解就是模块与模块之间的关系,最主要的就是依赖关系。从上面的讨论很容易的发现模块之间的耦合是无法消除的,除非他们之间没有任何关系。那么DI为什么声称能够给程序带来解耦呢?我觉耦合并没有消除,甚至没有减弱。DI只是将耦合进行了转移,通常是转移到配置文件中。B对A的依赖关系原来在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。