2013-09-30 2 views
0

Если я указать, что должно быть введено в собственность, каканнотация, чтобы избежать метода сеттера?

<property name="xxx" ref="some_bean" /> 

или

<property name="xxx"> 
    <bean .../> 
</property> 

тогда я должен написать метод установки.

Могу ли я использовать некоторые аннотации, чтобы избежать этого, как @autowired?

ответ

1

Вы можете сделать это с помощью впрыска конструктора. 3 основных способа сделать это:

XML:

<bean id="beanA" class="com.BeanA"> 
    <constructor-arg ref="beanB"/> 
</bean> 

<bean id="beanB" class="com.BeanB"/> 

JavaConfig:

@Configuration 
public class MyConfig { 
    @Bean 
    public BeanA beanA() { 
     return new BeanA(beanB()); 
    } 

    @Bean 
    public BeanB beanB() { 
     return new BeanB(); 
    } 
} 

автоматического связывание:

@Component 
public class BeanA { 
    private final BeanB beanb; 

    // This assumes that there is a BeanB in your application context already 
    @Autowired 
    public BeanA(final BeanB beanB) { 
     this.beanB = beanB; 
    } 
} 

Вы можете взять автоматическое связывание еще дальше, и провод непосредственно к Поле:

@Component 
public class BeanA { 
    // This assumes that there is a BeanB in your application context already 
    @Autowired 
    private final BeanB beanb; 
} 
+0

Я думаю, что это сложнее, чем добавление метода сеттера. На самом деле то, что я хочу, это простой способ опустить ненужный код. – Anderson

+0

Используйте '@ Autowired' на частном поле, затем (последний пример здесь) – kryger

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