У меня есть два класса:Почему столкновение Spring 3 @Component сталкивается, когда у них разные пакеты?
package package1;
@Component
public class MyClass1 {
...
package package2;
@Component
public class MyClass1 {
...
Когда я бег отказоустойчивых (в мавена) - я получаю следующую ошибку весной (что я не получаю в безошибочном):
test1(package3.MyIntegrationTest) Time elapsed: 6.737 sec <<< ERROR!
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException:
Annotation-specified bean name 'myClass1' for bean class [packaging1.MyClass1] conflicts
with existing, non-compatible bean definition of same name and class [package2.MyClass1]
Я понимаю, что для решения этой проблемы я мог бы получить разные имена классов - или я мог даже указать
@Component(name="MyClass1a")
и
@Component(name="MyClass1b")
Или я мог бы даже установить package-scan
только package1
.
(т. Е. Есть три способа решить это, которые очевидны - но это не мой вопрос).
Это НЕ, о чем я прошу. (Т.е. это не дубликат).
Теперь мне нужно только столкнуться весной, если у них одинаковое имя пакета. Неужели Весна достаточно умен, чтобы дать им разные сокращенные имена, если у них разные пакеты?
Мой вопрос: Почему Spring 3 @Component имена сталкиваются, когда у них разные пакеты?