2014-02-21 5 views
0

У меня есть код, содержащий ниже фрагмент кода работает:@Autowired по методам

class MyNewReader implements ItemReader<MyBean>, ItemStream{  
@Resource 
SingleItemPeekableItemReader<MyBean> myBeanPeekableReader; 

@Resource 
public void setDelegate(MyJdbcReader myJdbcReader){ 
    myBeanPeekableReader.setDelegate(myJdbcReader); 
} 

У меня нет какой-либо собственности делегата в моем классе MyNewReader. Но все же аннотация @Resource работает над методом setDelegate и работает нормально. Может ли кто-нибудь сказать, что нет необходимости иметь свойство в классе, чтобы аннотация по методу setter (имеющего это свойство в его имени) работает ... Не работает ли это как инъекция setter?

ответ

0

myBeanPeekableReader.setDelegate(myJdbcReader) получает свой jdbcReader, введенный как параметр, в метод, который вы аннотировали.

Да, установка впрыска.

+0

Да, вы правы. Но у меня нет свойства делегата имени в моем классе MyNewReader, но работает аннотация. Так что нет необходимости иметь свойство делегата имени в нашем классе, чтобы эта аннотация работала. Говоря особенно о @Resource о методе setDelegate. – user2971387

+0

@ пользователь2971387 да. Хотя обычно вы обычно это делаете. Но это не проблема. Его просто вызывает сеттер с аргументом. – NimChimpsky

+0

Я просто изменил имя метода setDelegate в моем классе MyNewReader tocaller. И это все еще работает. Означает ли это, что autowiring на любом методе (а не только метод setter) отлично работает, а метод аргумента метода успешно выполняется. – user2971387

Смежные вопросы