Spring 如果有多个类实现一个接口,@autowired是如何工作的?
(spring mvc)首先,我不知道下面的文字是否正确。如果它是正确的,那么我不理解@autowired在这里是如何工作的。如果它是错误的,那么当我有多个类来实现一个接口时,我应该怎么做Spring 如果有多个类实现一个接口,@autowired是如何工作的?,spring,model-view-controller,automation,autowired,Spring,Model View Controller,Automation,Autowired,(spring mvc)首先,我不知道下面的文字是否正确。如果它是正确的,那么我不理解@autowired在这里是如何工作的。如果它是错误的,那么当我有多个类来实现一个接口时,我应该怎么做 public interface UserDao{ public User findUserByUserName(String username); } public class UserDaoImpl1 implements UserDao{ @Override public U
public interface UserDao{
public User findUserByUserName(String username);
}
public class UserDaoImpl1 implements UserDao{
@Override
public User findUserByUserName(String username){
.......
}
}
public class UserDaoImpl2 implements UserDao{
@Override
public User findUserByUserName(String username){
.......
}
}
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;//how does atuowired work here?
@Override
public User loginCheck(User user){
......
}
}
当您有多个课程时,您可以做两件事:
@Qualifier
注释并告诉应该注入哪个实现(spring默认限定符是bean的名称),这样做将注入第二个bean实现:
@Autowired
@Qualifier("userDaoImpl2")
private UserDao userDao;
@Primary
,这样当存在多个实现且接口为@Autowire
时,一个实现总是比另一个实现更可取这是解释细节的好方法。您检查过了吗?这并没有回答您的问题,你需要更多的东西来澄清吗?谢谢你的帮助。它帮助了我很多。我已经学习了很长一段时间的Spring或编程,我觉得在我熟悉它之前我没有必要考虑太多。再次感谢。我问这个是因为你第一次接受了,而不是未被接受的答案,所以我觉得有些东西是。丢失的请接受答案,如果它解决了您的问题,其他人也会认为它是被回答的,这就是它的工作原理。我很抱歉。我会记住它。如果使用这个-那么它将是紧密耦合的权利???-我们不想使用tighly耦合的@Autowired@Qualifier(“userDaoImpl2”)私有UserDao UserDao