DI(依赖注入)
注入的三种方法:构造器方法注入,set注入,基于注解的注入(接口注入)
1:构造器方法注入
创建一个Address类;
在bean标签内部使用 constructor-arg标签
type属性:使用类型指定构造方法中参数的类型
index属性:使用构造方法中参数索引值来 进行注入
name属性 :使用构造方法中参数名称 来注入 ( 常用!)
value属性:要注入的值(基本数据类型和String类型)
ref属性:要注入的值(引用在IOC容器中其他的bean对象)
优点:创建时必须要指定构造方法中的全部参数,bean才能被创建,保证了对象创建出来之后,成员变量一定都有值
缺点:必须要指定全部参数,否则无法创建,使用该方式改变了对象的创建过程
2: set注入
Set属性注入:必须要有一个无参的构造方法,否则只能用构造方法构造
1:创建一个User的类,给User一个Name属性;(这里是通过调用我们的set方法进行实现的)
2:配置xml文件
本质上包含两步:
第一步,需要new UserServiceImpl()创建对象, 所以需要默认构造函数
第二步,调用setUserDao()函数注入userDao的值, 所以需要setUserDao
依赖注入:Set注入
依赖:bean 对象的创建依赖于容器
注入:bean 对象中的所有属性,有容器来注入!
1:谁依赖于谁:
当然是应用程序依赖于IoC容器;
2:为什么需要依赖:
应用程序需要IoC容器来提供对象需要的外部资源
3:谁注入谁:
很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;
4:注入了什么:
就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。