Подтвердить что ты не робот

Ссылка аннотированный Spring Компонент в XML Bean Определение

Я использую внешнюю библиотеку, которая требует, чтобы я ее настраивал с помощью определения XML Bean; в определении Bean мне нужно предоставить внешний класс с Bean из моего проекта. Я использую аннотации spring с проверкой компонентов.

Как мне ссылаться на аннотированный Bean в определении XML Bean?

Есть ли альтернативы созданию XML Bean Определение?

Подробности: spring 3.0.7

4b9b3361

Ответ 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 />