У меня есть следующие ...
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.
*/
Здесь вам нужно понять цель @Qualifier.
There may be a situation when you create more than one bean of the same type and want to wire only one of them with a property. In such cases, you can use the @Qualifier annotation along with @Autowired to remove the confusion by specifying which exact bean will be wired.
Вы пытаетесь создать 2 класса с одинаковым именем, но в разных пакетах. Для этого вам нужно будет указать имя службы в качестве параметра значения для аннотации @Service, чтобы различать два:
package package1;
@Service("kb")
public class UserService {
...
}
package package2;
@Service("user")
public class UserService {
...
}
@Autowired
@Qualifier("user")
package2.UserService p2;
@Autowired
@Qualifier("kb")
package1.UserService p1;
Работаю у меня с аналогичной тестовой установкой. Какую ошибку вы получаете?
Он говорит, что не может найти другую службу. Позвольте мне попробовать более простой проект.
Вроде простой проект работает, но все же не мой :-(
Пожалуйста, поделитесь stacktrace и можете ли вы перечислить версии используемых вами библиотек Spring, потому что действительно сложно отлаживать с такой ограниченной информацией.
Извините, мне пришлось забрать чек, я думал, что он работает, но теперь он говорит ...
Consider defining a bean of type 'package1.UserService' in your configuration.