一、搭建maven工程、导入依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.6</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>
二、定义java类
public interface UserService {
public void doWork();
}
public class UserServiceImpl implements UserService {
UserDao userDao;
public UserServiceImpl(UserDao userDao){
this.userDao = userDao;
}
@Override
public void doWork(){
System.out.println("UserServiceImpl.doWork");
userDao.doWork();
}
}
public class UserDao {
public void doWork(){
System.out.println("UserDao.doWork");
}
}
三、xml文件配置(放在resource目录)
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="userService" class="com.binbin.service.impl.UserServiceImpl">
<constructor-arg name="userDao" ref="userDaoId"></constructor-arg>
</bean>
<bean id="userDaoId" class="com.binbin.dao.UserDao">
</bean>
</beans>
编写测试类
public class SpringTest {
@Test
void test(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-01.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
userService.doWork();
}
}
输出结果:
UserServiceImpl.doWork
UserDao.doWork
总结
- 以上例子为有参构造函数实现依赖注入(DI)
- 要实现set注入需要修改两个地方
1. UserServiceImpl实现类添加一个无参构造方法和set方法
public UserServiceImpl(){}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
- 将constructor-arg标签修改为property标签
<property name="userDao" ref="userDaoId"></property>