春豆田注射

时间:2010-10-04 10:40:47

标签: java spring inversion-of-control dependency-properties javabeans

使用Spring IoC允许设置通过setter公开的bean属性:

public class Bean {
    private String value;
    public void setValue(String value) {
        this.value = value;
    }
}

bean的定义是:

<bean class="Bean">
    <property name="value" value="Hello!">
</bean>

是否有任何现有的Spring Framework插件/类允许直接将bean字段作为属性公开而不定义setter?像这样的bean具有相同的bean定义:

public class Bean {
    @Property
    private String value;
}

3 个答案:

答案 0 :(得分:6)

你可以:

  • 使用@Value注释并注入属性(使用表达式语言)
  • 看看Project Lombok,这将让你跳过所有的二传手和吸气者(以及更多)

答案 1 :(得分:5)

Spring支持out of the box @Resource注释的基于注释的字段注入JSR-250。 Spring自己的@AutowiredJSR 330@Inject also work

您只需要add this line to your context.xml

<context:annotation-config/>

<强>参考:

答案 2 :(得分:1)

你要求的是不可能的。 Spring订阅约定优于配置。所以它希望有固定器和吸气剂。虽然Spring可以直接进样;而Spring使用Reflection来实现这一点,Spring没有提供反转这个过程来使用Reflection来访问没有setter或getter的字段。即使Spring AOP实现也希望找到构造它的代理的方法。