分享人:童志荣
1.背景介绍
2.知识剖析
3.常见问题
4.编码实战
5.扩展思考
6.参考文献
7.更多讨论
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法。
这种开发存在的问题是 new 的类实例不便于统一管理,spring 提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。
依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。
spring有多种依赖注入的形式
1、Setter方法注入
2、构造方法注入
3、静态工厂的方法注入
4、实例工厂的方法注入
其中,用得最多的是1、2 种,多写多练就会非常熟练
手动装配
通过在
自动装配
在
spring 配置文件是什么?
Spring 配置文件是个XML 文件,这个文件包含了类信息,描述了如何配置它们,以及如何相互调用。
什么是依赖注入?
依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述它如何被创建。
你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。
什么是bean装配?
装配,或bean 装配是指在Spring 容器中把bean组装到一起,前提是容器需要知道bean的依赖关系,如何通过依赖注入来把它们装配到一起。
什么是自动装配?
Spring 容器能够自动装配相互合作的bean,这意味着容器不需要 constructor-arg 和 property 配置,能通过Bean工厂自动处理bean之间的协作。
spring的依赖注入到底有什么优势?
让使用者不需要自己去创建或获取自己的依赖,既然创建或获取的过程不是使用者控制的。
这也就意味着,当我需要切换依赖时,不需要改变使用者的代码。这当然要结合面向接口编程等思想,也许有人要说我一个接口就只有一个实现,何必用接口,我也基本不会去切换自己的实现。
说的对,然而就算你只有一个实现。 但是你往往会用到AOP吧,其实用代理对象替换原对象也算是切换了实现。什么日志,权限检查,异常处理等等需求。