之前在HelloWorld工程中已经使用了XML进行配置
<bean id="helloWorld" class="com.wyc.helloworld.HelloWorld">
<property name="name" value="Spring"></property>
</bean>
class属性为bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参的构造函数(Bean类的定义要求无参public构造函数)
ApplicationContext
从IOC容器中获取Bean
调用ApplicationContext的getBean()方法
常用的根据id和根据类型
依赖注入的方式
- 属性注入
- 构造器注入
- 工厂方法注入(很少使用,不推荐)
属性注入
属性注入即通过setter方法注入Bean的属性值或依赖的对象
属性注入使用<property>元素,使用name属性指定Bean的属性名称,value属性或<value>子节点指定属性值(Q:如果value不是String类型是不是就不能使用属性注入了?)
属性注入是实际应用中最常用的注入方式
构造方法注入
通过构造方法注入Bean的属性值或依赖的对象,它保证了Bean实例在实例化后就可以使用
构造器注入在<constructor-arg>元素中声明属性,<constructor-arg>中没有name属性
在有多个构造函数的条件下为了消除歧义可以按索引匹配或者按类型匹配