Spring对几种常用类型的依赖注入
通过spring对基本类型、引用类型以及常用集合的依赖注入方法。首先创建一个测试类,提供几种测试类型
public class UserDaoImpl {
private String testStr; //测试引用类型String
private int testInt; //基本类型int
private List<String> strList; //list集合
private Map<String,User> userMap; //map集合
private Properties prop; //Properties集合
}
并为其添加相应的setter
方法,idea快捷键alt+insert
基本类型
在resource
文件夹下创建配置文件applicationContext.xml
使用bean
标签添加
//id为getBean时使用的标识符,class为引用的全类名,也就是容器中初始化的类
<bean id="userDaoImpl" class="it.impl.UserDaoImpl">
<property name="testInt" value="15"></property>
</bean>
使用property
标签对属性进行初始化,name为属性名,也就是set方法名去掉set并将剩下的那部分第一个字母小写的名字,一般情况和类中变量相同,但含义并不相同,value为注入的值。
引用类型与基本类型基本一致,举一反三即可
通过实例测试
@Test
public void test(){
ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao =(UserDao) app.getBean("userDao");
userDao.getTestInt();
}
集合
List集合
在property
标签下添加list
标签,list
标签中通过value
标签即可,多个值多个value
标签包裹
<bean id="userDaoImpl" class="it.impl.UserDaoImpl">
<property name="strList" >
<list>
<value>aaa</value>
<value>bbb</value>
<value>ccc</value>
</list>
</property>
</bean>
Map集合
map集合使用的value
为User
类型,所以需要另外创建一个测试类User
,变量为int
类型的id
和age
,重写toString()
方法,添加构造方法。
map比list稍复杂,需要先将User的Bean导入。此处使用构造方法进行初始化。
<bean id="user" class="it.demo.User" scope="prototype">
<constructor-arg name="id" value="1"></constructor-arg>
<constructor-arg name="age" value="18"></constructor-arg>
</bean>
在map标签下添加entry
标签,标签中key属性即为map的key值,用例为String
类型,直接添加字符串即可,value为引用类,需要引用User
的Bean
标签,所以使用value-ref
属性。
<bean id="userDaoImpl" class="it.impl.UserDaoImpl">
<property name="userMap" >
<map>
<entry key="user1" value-ref="user"></entry>
<entry key="user2" value-ref="user"></entry>
</map>
</property>
</bean>
Properties集合
较为常用的配置文件的集合类型。与map集合大同小异。
<bean id="userDaoImpl" class="it.impl.UserDaoImpl">
<property name="prop">
<props>
<prop key="p1">ppp</prop>
<prop key="p2">ddd</prop>
</props>
</property>
</bean>