Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean
依赖注入说白了就是对象之间的引用,包含互相持有引用的对象以及基本类型的参数如何去赋值;而在java中这一切过程我们是直接new对象设置值
分别包括构造函数的注入,设置值函数的注入,注入内部Bean ,注入集合
构造函数注入:
- 通过constructor-arg标签配置,
- 可以配置引用类型,可以配置基本类型
- 直接指定值设置value属性
<bean class="com.ldl.test.newspring.DITextEditor" id="ditexteditor">
<constructor-arg type="java.lang.String" value="母猪"/>
<constructor-arg ref="checker"/>
<!--<property name="n" value="老炮"/>-->
<!-- <property name="spellChecker">
<bean scope="prototype" id="spellChecker" class="com.ldl.test.newspring.SpellChecker">
<property name="msg" value="小鸡炖蘑菇"/>
</bean>
</property>-->
<!--<property name="spellChecker" ref="checker"/>-->
</bean>
** 通过设值函数注入:**
- 就是相当于通过set方法设置值
- 容器调用一个无参的构造函数或一个无参的静态方法,容器在bean上调用set设置值方法注入
- 通过property 标签设置属性,可以引用类型也可以直接设置值
<bean class="com.ldl.test.newspring.SpellChecker" id="checker" scope="prototype">
<property name="msg" value="天王蓋地虎"/>
<property name="spellChecker" ref="checker"/>
** 注入内部bean**
- 实际上就是如果给内部类定义和赋值
看看例子,就是在设置参数的内部配置一个bean,对应的就是java内部类
<bean class="com.ldl.test.newspring.DITextEditor" id="ditexteditor">
<!--<constructor-arg type="java.lang.String" value="母猪"/>-->
<!--<constructor-arg ref="checker"/>-->
<property name="n" value="老炮"/>
<property name="spellChecker">
<bean scope="prototype" id="spellChecker" class="com.ldl.test.newspring.SpellChecker">
<property name="msg" value="小鸡炖蘑菇"/>
</bean>
</property>
<!--<property name="spellChecker" ref="checker"/>-->
</bean>
集合注入
这个也没什么可说的,看看我写的例子就知道了
<bean id="collection" class="com.ldl.test.collectionz.JavaCollection">
<property name="addressList">
<list>
<value>INDIA</value>
<value>Pakistan</value>
<value>USA</value>
</list>
</property>
<property name="addressSet">
<set>
<value>AAA</value>
<value>BBB</value>
<value>CCC</value>
</set>
</property>
<property name="addressMap">
<map>
<entry key="1" value="INDIA"/>
<entry key="2" value="Pakistan"/>
<entry key="3" value="USA"/>
<entry key="a" value-ref="innera">
</entry>
</map>
</property>
<property name="addressProp">
<props>
<prop key="One">INDIA</prop>
<prop key="Two">Pakistan</prop>
<prop key="Three">USA</prop>
</props>
</property>
</bean>
<bean id="innera" class="com.ldl.test.collectionz.InnerA">
<property name="mes" value="测试一下"/>
</bean>
设置null
<bean id="..." class="exampleBean">
<property name="email" value=""></property>
</bean>
<bean id="..." class="exampleBean">
<property name="email"><null/></property>
</bean>