ref:用于指定其他bean类型数据(只能是在Spring的IOC核心中出现过的bean对象)
<bean> <!-- 如果有多个String类型的参数,仅使用type标签无法实现注入 --> <constructor-arg type="java.lang.String" value="Jack"></constructor-arg> <constructor-arg index="1" value="18"></constructor-arg> <constructor-arg ref="date"></constructor-arg> </bean> <!-- 配置一个日期对象 --> <bean></bean>
使用set方法注入
这种方式使用的标签为property,在bean标签的内部使用,该标签的属性有三种:
name:用于指定注入时所调用的set方法名称,即set之后的名称,并且要改成小写(例如"setUsername"对应的name就是"username"),换句话说就是属性名称
value:要注入的数据的值(只能是基本类型或者String类型)
ref:用于指定其他bean类型数据(只能是在Spring的IOC核心中出现过的bean对象)
<bean> <property value="Jack"></property> <property value="18"></property> <property ref="date"></property> </bean>
使用注解注入:本篇主要讲解使用xml配置文件的方式注入,因此这种方法暂不做介绍
4.关于集合类型的注入这里我们使用set方法来向集合中注入数据,对于使用的标签,注意以下三点:
用于给List结构集合注入的标签有:array、list、set
用于给Map结构集合注入的标签有:map、props
结构相同,标签可以互换
<bean> <property> <array> <value>AAA</value> <value>BBB</value> <value>CCC</value> </array> </property> <property> <list> <value>ListA</value> <value>ListB</value> <value>ListC</value> </list> </property> <property> <set> <value>SetA</value> <value>SetB</value> <value>SetC</value> </set> </property> <property> <map> <entry key="A" value="MapA"></entry> <entry key="B" value="MapB"></entry> <!-- 对于entry标签,可以使用value属性来指定值,也可以在标签内部使用value标签 --> <entry key="C"> <value>MapC</value> </entry> </map> </property> <property> <props> <!-- 对于prop标签,只有key属性,没有value属性,所以直接将该标签的值作为value --> <prop key="A">PropA</prop> <prop key="B">PropB</prop> <prop key="C">PropC</prop> </props> </property> </bean> 5.完善之前的代码在本部分的开头,我们还有一个问题没有解决,那就是AccountServiceImpl类中的accountDao对象无法实例化。现在我们就可以通过配置的方式来对进行依赖注入:
<bean> <property ref="accountDao"></property> </bean> <bean></bean>最后我们再进行统一的测试,修改Client类中的main方法:
public static void main(String[] args) { //验证依赖注入 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); People people1 = applicationContext.getBean("people1", People.class); System.out.println(people1); People people2 = applicationContext.getBean("people2", People.class); System.out.println(people2); People people3 = applicationContext.getBean("people3", People.class); System.out.println(people3); //向accountService中注入accountDao以调用saveAccounts方法 IAccountService accountService = (IAccountService) applicationContext.getBean("accountService"); System.out.println(accountService); accountService.saveAccounts(); }运行代码,结果如下: