spring最好不要在类上添加autowired,而是在接口上添加
时间: 2024-03-10 11:48:08 浏览: 58
在Spring中,建议使用接口来定义依赖关系,而不是具体的实现类。这是因为如果我们在类上添加@Autowired注解,就会直接依赖于具体的实现类,而不是依赖于抽象的接口。这样就会破坏依赖倒置原则,使得代码更加脆弱和难以扩展。
使用接口来定义依赖关系可以有效地解耦代码,使得不同的实现类可以互相替换,而不会影响到高层模块。因此,建议在Spring中使用接口来定义依赖关系,并在接口上添加@Autowired注解,例如:
```
public interface UserService {
void addUser(User user);
}
@Service
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
@Autowired
public UserServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public void addUser(User user) {
userRepository.save(user);
}
}
```
在这个例子中,我们定义了一个UserService接口,并在接口上添加了@Autowired注解。在实现类UserServiceImpl中,我们使用构造函数注入UserRepository对象,而不是使用字段注入。这样就可以保证UserService接口只依赖于抽象的接口,而不是具体的实现类。
总之,在使用Spring时,建议使用接口来定义依赖关系,并在接口上添加@Autowired注解,这样可以保证代码的灵活性和可扩展性。
阅读全文