2013-09-30 108 views
0

如果我指定什麼應該被注入的屬性,像註解避免setter方法?

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

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

然後我必須寫一個setter方法。

我可以使用一些註釋來避免這種情況,如@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

我認爲這比添加setter方法更復雜。其實我想要的是省略不必要代碼的簡單方法。 – Anderson

+0

在專用字段上使用'@ Autowired',然後(這裏是最後一個例子) – kryger