微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 具有相同类名(不同包)的两个Spring Service Beans即使使用限定符也会抛出Error

我有以下……

package package1;

@Service
@Qualifier("kb")
public class UserService {
...
}

package package2;

@Service
@Qualifier("user")
public class UserService {
...
}

@Autowired
@Qualifier("user")
package2.UserService p2;
@Autowired
@Qualifier("kb")
package1.UserService p1;

但当我尝试运行时,我得到……

org.springframework.beans.factory.BeanDeFinitionStoreException: Failed to parse configuration class [boot.Application]; nested exception is org.springframework.context.annotation.ConflictingBeanDeFinitionException: Annotation-specified bean name ‘userService’ for bean class [package1.UserService] conflicts with existing,non-compatible bean deFinition of same name and class [package2.UserService]

我如何拥有2个同名服务?

解决方法

从类中删除@Qualifier,仅在自动装配时使用@Qualifier

@Service("kb")
public class UserService {
...
}

package package2;

@Service("user")
public class UserService {
...
}

来自@Qualifier javadoc

**
 * This annotation may be used on a field or parameter as a qualifier for
 * candidate beans when autowiring. It may also be used to annotate other
 * custom annotations that can then in turn be used as qualifiers.
 */

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐