Spring关于依赖注入的几种方式和Spring配置文件的标签
Spring关于依赖注入的几种方式和Spring配置文件的标签
构造器注入
通过构造方法和set方法注入,只需要将set方法改造成带参的构造方法,然后在<constructor-arg>标签通过ref方法注入要注入的bean对象标签。
xml文件配置
Teacher类
Student类
测试类和结果
自动专配
通过autowire属性来指明,使用后就不需要我们在bean.xml文件去配置。autowire有两个属性一个是byname,另外一个bytype。
byname的方式根据set方法的方法名和要注入bean对象的id名要一致。
Teacher类
Spring配置文件
测试类和运行结果
Students
根据属性的数据类型自动装配。Spring容器会查找与属性类型匹配的唯一Bean,并将其注入到对应的属性中。如果有多个相同类型的Bean,则装配失败。即会在bean里面查找与set方法的参数类型一样的对象
xml配置文件
Students类
teacher类
测试类和结果
基本数据的注入
如果注入类似Interger或Spring的方法,可直接通过在<property>标签通过value指定值有set方法直接注入。
spring配置文件
Student类
测试结果
List集合的注入方式
类似 <bean id="enrolledServiceImp" class="com.frank.service.EnrolledServiceImp">
<property name="list">
<list>
<value>blue</value>
<value>green</value>
<value>yellow</value>
</list> </property>
</bean>Spring配置文件
测试结果
学生类
如果我注入的是个list,但是list里面不是普通的字符串,而是一个类的引用,那又该如何实现呢?
实现方式:<property name="listDao">
<list> <ref bean="a1"></ref>
<ref bean="a2"></ref>
<ref bean="a3"></ref> </list> </property> </bean> <bean id="a1" class="com.frank.dao.EnrolledDao"></bean> <bean id="a2" class="com.frank.dao.EnrolledDao"></bean> <bean id="a3" class="com.frank.dao.EnrolledDao"></bean>
Map集合的注入方式
同上与list配置文件很类似