春豆田注水
使用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框架是否有任何现有的插件/类允许直接将bean字段公开为属性而无需定义setter?具有相同 bean 定义的类似内容:
public class Bean {
@Property
private String value;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以:
@Value
注释并注入属性(使用表达式语言)You can:
@Value
annotation and inject a property (using expression language)Spring支持基于注解的字段注入 开箱即用 ="JSR 250:通用注释">JSR-250
@Resource
注释。 Spring 自己的@Autowired
和 JSR 330 的@Inject
也可以。你只需要 将此行添加到您的 context.xml:
参考:
配置
@Autowired
和@Inject
Spring supports annotation-based field injection out of the box for the JSR-250
@Resource
annotation. Spring's own@Autowired
and JSR 330's@Inject
also work.You just need to add this line to your context.xml:
Reference:
configuration
@Autowired
and@Inject
@Resource
你所要求的是不可能的。 Spring 遵循约定优于配置的原则。所以它期望有 setter 和 getter。虽然 Spring 可以直接进行字段注入; Spring 使用 Reflection 来实现这一点,Spring 没有提供逆向过程来使用 Reflection 来访问没有 setter 或 getter 的字段。即使 Spring AOP 实现也希望找到构建其代理的方法。
What you are asking for is not possible. Spring subscribes to convention over configuration. So it expects there to be setters and getters. While direct field injection is possible with Spring; and Spring uses Reflection to achieve this, Spring does not provide for reversing this process to use Reflection to access fields without setters or getters. Even Spring AOP implementation expects to find methods to structure it's proxies.