春豆田注水

发布于 2024-09-26 03:32:53 字数 488 浏览 6 评论 0 原文

使用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;
}

Using Spring IoC allows to set bean properties exposed via setters:

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

And the bean definition is:

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

Is there any existing plugins/classes for Spring Framework that allows to directly expose bean fields as properties without defining setters? Something like this with the same bean definition:

public class Bean {
    @Property
    private String value;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

土豪我们做朋友吧 2024-10-03 03:32:53

您可以:

  • 使用 @Value 注释并注入属性(使用表达式语言)
  • 查看 Project Lombok ,这将使您跳过所有 setter 和 getter(以及更多)

You can:

  • use the @Value annotation and inject a property (using expression language)
  • take a look at Project Lombok, which will let you skip all setters and getters (and more)
清风疏影 2024-10-03 03:32:53

Spring支持基于注解的字段注入 开箱即用 ="JSR 250:通用注释">JSR-250 @Resource 注释。 Spring 自己的 @AutowiredJSR 330@Inject 也可以

你只需要 将此行添加到您的 context.xml:

<context:annotation-config/>

参考:

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:

<context:annotation-config/>

Reference:

狼亦尘 2024-10-03 03:32:53

你所要求的是不可能的。 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文