Ссылка аннотированный Spring Компонент в XML Bean Определение
Я использую внешнюю библиотеку, которая требует, чтобы я ее настраивал с помощью определения XML Bean; в определении Bean мне нужно предоставить внешний класс с Bean из моего проекта. Я использую аннотации spring с проверкой компонентов.
Как мне ссылаться на аннотированный Bean в определении XML Bean?
Есть ли альтернативы созданию XML Bean Определение?
Подробности: spring 3.0.7
Ответы
Ответ 1
Независимо от того, как он создан (на основе XML- или аннотаций-метаданных), каждый bean попадает в контекст приложения под уникальным именем.
Если вы только что аннотировали свой класс с помощью @Component
или производных, не указав ни одного имени, будет применяться схема именования по умолчанию, а имя bean будет вашим именем класса с первым символом в нижней части: ClassName => "className"
.
С учетом этого, если вам нужно ввести этот bean в определение XML bean, вы сделаете это как с любым другим bean в своем контексте:
<bean id="someBean" class="SomeClass">
<property name="someProp" ref="className"/><!-- to stick to the above example -->
</bean>
Поскольку вы смешиваете аннотации с XML, контекст приложения сможет правильно определить "className" bean.
Ответ 2
Аннотации @Service берут необязательное значение String, которое может использоваться для предоставления bean имени по вашему выбору. Например, если ваш пользовательский bean выглядит следующим образом:
@Service("mySpecialName")
public class MyClass { ... }
Тогда ваш xml может иметь:
<bean class="com.someone.else.library.SomeClass">
<property name="someProp" ref="mySpecialName"/>
</bean>
Ответ 3
Убедитесь, что вы добавили код ниже в свой XML файл
<context:component-scan base-package="" />
<context:annotation-config />