2012-03-22 7 views
0

Я читал Spring 3.0 документации, и я пришел к фразе -Spring аннотации и конфигурация XML

инъекция Аннотация выполняется перед инъекцией XML, таким образом, последняя конфигурация заменит бывшую для свойств проводных через оба подходов ,

Следующий вопрос пришел мне на ум: Если я использую аннотацию в бобе (как @Service("myService")), теперь я использую другой компонент, и он использует «MYSERVICE», и «MYSERVICE» будет введен через Конфигурация XML.

Будет ли это работать? Я пытался, но это дает мне

BeanCreationException (не может разрешить ссылки на боб «MYSERVICE» при установке свойства компонента «MYSERVICE»)

Позже я прошел через этот вопрос Wiring Spring bean through annotations and xml context, но в растворе сказано, что «просто оставьте все ваши аннотированные поля неуказанными, и они будут автоматически введены». (Я не пробовал это решение)

Но что, если я хочу указать все аннотированные поля, как я указал @Service аннотации выше? Любые предложения?

ответ

0

Я понял ответ, он работает очень хорошо. На самом деле я забыл добавить тег в xml-конфигурацию. Нам нужно добавить этот тег в каждый конфигурационный файл, то есть если вы написали файл конфигурации для блейнов уровня обслуживания, добавьте тег для аннотированных bean-компонентов уровня сервиса. Аналогичен для уровней dao и контроллера.

0

Вы должны autowire свой конструктор, как показано ниже ...

@Autowired(required=true) 
public UserService(DataSource dataSource){ 
    this.userDS = new UserDS(dataSource); 
} 

Так, в приведенном выше коде DataSource будет введен в UserService автоматически.

+1

Глупости. Этот вопрос не имеет ничего общего с инсталляцией конструктора. Конструктор, метод и инъекция поля - это три разные версии выполнения одной и той же задачи, но эта проблема может быть решена с использованием любого из них. –