Spring第三篇【依赖注入】
依赖注入(dependency injection):是Spring框架核心ioc(inversion of control)的具体实现
注入bean
通过set的方式
package com.example.demo.service.impl;
import com.example.demo.dao.UserDao;
import com.example.demo.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.save();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="com.example.demo.dao.UserDao" />
<bean id="userServiceImpl" class="com.example.demo.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
</beans>
备注:
- name="userDao"中的userDao是根据setUserDao的UserDao(首字母变小写)来的
通过p命名空间的方式
p命名空间注入的本质就是set注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="com.example.demo.dao.UserDao" />
<bean id="userServiceImpl" class="com.example.demo.service.impl.UserServiceImpl" p:userDao-ref="userDao"/>
</beans>
备注:
- userDao-ref中的userDao是根据setUserDao的UserDao(首字母变小写)来的
通过构造器的方式
package com.example.demo.service.impl;
import com.example.demo.dao.UserDao;
import com.example.demo.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.save();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="com.example.demo.dao.UserDao" />
<bean id="userServiceImpl" class="com.example.demo.service.impl.UserServiceImpl">
<constructor-arg name="userDao" ref="userDao"/>
</bean>
</beans>
备注:
- name="userDao"中的userDao是根据public UserServiceImpl(UserDao userDao)(构造器参数名)来的
注入普通数据类型,数组,集合等

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userServiceImpl" class="com.example.demo.service.impl.UserServiceImpl">
<constructor-arg name="userDao" ref="userDao"/>
<property name="name" value="张三"/>
<property name="list">
<list>
<value>someone</value>
<value>like</value>
<value>you</value>
</list>
</property>
<property name="arr">
<list>
<value>a</value>
<value>b</value>
<value>c</value>
</list>
</property>
<property name="set">
<set>
<value>i</value>
<value>o</value>
<value>c</value>
</set>
</property>
<property name="map">
<map>
<entry key="a" value-ref="user1"/>
<entry key="b" value-ref="user2"/>
</map>
</property>
<property name="properties">
<props>
<prop key="A">123
</prop>
<prop key="B">456
</prop>
</props>
</property>
</bean>
<bean id="user1" class="com.example.demo.domain.User">
<property name="age" value="18"/>
<property name="sex" value="男"/>
</bean>
<bean id="user2" class="com.example.demo.domain.User">
<property name="age" value="20"/>
<property name="sex" value="女"/>
</bean>
</beans>

浙公网安备 33010602011771号