spring 循环依赖解决示例代码
时间: 2023-07-25 11:11:20 浏览: 97
Spring如何解决循环依赖的问题
以下是一个简单的示例代码,演示如何解决 Spring 的循环依赖问题:
```java
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void printUser() {
System.out.println(userDao.getUser());
}
}
public class UserDaoImpl implements UserDao {
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
public String getUser() {
return "User";
}
}
```
在这个示例代码中,UserService 依赖 UserDao,而 UserDao 又依赖 UserService。这是一个典型的循环依赖问题。为了解决这个问题,我们可以使用构造器注入或者 @Autowired 注解:
```java
public class UserServiceImpl implements UserService {
private UserDao userDao;
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
public void printUser() {
System.out.println(userDao.getUser());
}
}
public class UserDaoImpl implements UserDao {
private UserService userService;
public UserDaoImpl(){}
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
public String getUser() {
return "User";
}
}
```
在这个示例代码中,我们使用了构造器注入和 @Autowired 注解来解决循环依赖问题。通过构造器注入,我们可以将依赖关系的建立放在对象创建的时候,从而避免了循环依赖问题。而通过 @Autowired 注解,我们可以让 Spring 容器在创建对象之后,再进行依赖关系的建立,从而避免了循环依赖问题。
阅读全文