Sprng思想注入依赖学习笔记.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本人总结了一些 ssh 常见的面试题 例举如下 强调在回答的时候不要光回答概念,要思维扩散性的讲些相关的东西 spring 的优点? 1. 降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2. 可以使用容易提供的众多服务,如事务管理,消息服务等 3. 容器提供单例模式支持 4. 容器提供了 AOP 技术,利用它很容易实现如权限拦截,运行期监控等功能 5. 容器提供了众多的辅助类,能加快应用的开发 6. spring 对于主流的应用框架提供了集成支持,如 hibernate ,JPA,Struts 等 7. spring 属于低侵入式设计,代码的污染极低 8. 独立于各种应用服务器 9. spring 的 DI 机制降低了业务对象替换的复杂性 10.Spring 的高度开放性,并不强制应用完全依赖于 Spring ,开发者可以自由选择 spring 的 部分或全部 什么是 DI 机制? 依赖注入( Dependecy Injection )和控制反转( Inversion of Control )是同一个概念,具体的 讲:当某个角色 需要另外一个角色协助的时候, 在传统的程序设计过程中, 通常由调用者来创建被调用者的 实例。但在 spring 中 创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由 spring 来完成,然后注入调用者 因此也称为依赖注入。 spring 以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是 AOP ? 面向切面编程( AOP )完善 spring 的依赖注入( DI ),面向切面编程在 spring 中主要表现为 两个方面 1. 面向切面编程提供声明式事务管理 2. spring 支持用户自定义的切面 面向切面编程(aop)是对面向对象编程(oop)的补充, 面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切 面。 AOP 从程序运行角度考虑程序的结构,提取业务处理过程的切面, oop 是静态的抽象, aop 是动态的抽象, 是对应用执行过程中的步骤进行抽象, ,从而获得步骤之间的逻辑划分。 aop 框架具有的两个特征: 1. 各个步骤之间的良好隔离性 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. 7. class A{ 8. } 显然,此时B是依赖与A。我们不妨将 A比作牛,将B比作人,人吃牛是显然的事实。当 用户要利用B的时候,必须先要指定他所依赖的 A的对象。这样代码模块之间就具有很强 的耦合。通过依赖注入的方式,能够使 B对A的依赖关系对代码人员变得松散。我们将 A 和B对象都交给容器来管理,通过配置文件告诉 B该依赖的A,这样代码中的依赖关系被 移到了配置文件中,通过对配置文件的管理,很容易编写低耦合的代码。 对于依赖注入的几种实现参考 Depe ndency Injection 。 但是,目前在学术界争论的焦点在于: DI究竟能不能给程序带来解耦。 众所周知,封装和依赖是面向对象编程思想中两个很重要的概念。 编写高内聚低耦合的代码 是OOP编程的目标。但是,这其中本来就存在着互相矛盾。 所谓高内聚,就是通过封装之后,是被封装的各个模块 (这里一般是一个类)内部的功能功能 相关性、依赖性、协作性等高。此时,我们要做的就是对模块按照上述标准进行分解,直到 满意为止。但是,什么时候才是一个尽头?当我们在不断的对模块进行分解时, 被分解的模 块之间的耦合就不断的增强。 此时,我们就会反过来想, 低耦合就是不断降低模块之间的关 系,没有关系最好。于是我们要做的就是模块合组,将耦合关系强的模块组合在一起。 那怎 么样才能做到最好?那不就是用一个统一的模块来表示整个需要描述的系统, 废话那不就等 于什么都没有做。说了这么多,我要说的就是要在内聚和耦合之间进行权衡, 找到一个恰当 的平衡点。 下面切入正题,所谓耦合,简单的理解就是模块与模块之间的关系, 最主要的就是依赖关系。 从上面的讨论很容易的发现模块之间的耦合是无法消除的, 除非他们之间没有任何关系。那 么DI为什么声称能够给程序带来解耦呢?我觉耦合并没有消除, 甚至

文档评论(0)

wangsufen1241 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档