我正在寻找将 spring 上下文中定义的属性(由propertiesFactoryBean 提供)注入(inject)到 wicket 组件中的可能性。我知道使用@SpringBean注解将bean注入(inject)组件的方法,但是属性的相应方法是什么?
我的属性的定义方式:
<bean id="myPropertiesFactory" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="mySpringProperty">mySpringProperty</prop>
</property>
</bean>
我尝试过的事情。它通常与自定义bean一起工作的方式:
@Inject
@Value("${mySpringProperty}")
使用propertiesFactory的名称来访问属性值
@Inject
@Value("$myPropertiesFactory.properties.mySpringProperty")
使用值注释
@Value("#myPropertiesFactory['mySpringProperty']")
使用SpringBean
@SpringBean(name="myPropertiesFactory.mySpringProperty")
这些解决方案都不起作用。因此,为了注入(inject) mySpringProperty ,我使用解决方法创建一个 String 类型的 bean,当我用 SpringBean 注释组件的相应成员时,该 bean 会由 wicket 正确注入(inject),但我认为一定有更好的解决方案。
<bean id="mySpringPropertyBean" class="java.lang.String">
<constructor-arg type="java.lang.String" value="https://foobar.com" />
</bean>
注释
@SpringBean
private String mySpringPropertyBean;
最佳答案
@SpringBean仅支持spring bean的注入(inject)。我想有人可以实现一个 @SpringValue 注释来完成你想要的事情,但据我所知没有人这样做过。
我通常做的是:
- 我的 wicket 应用程序类是 spring bean。
- 它具有带有 @Value 注释的属性 - 由于该对象是 spring bean,因此会正确评估和设置这些属性
- 我通过调用 MyApplication.get().getXXX() 或 ((MyApplication)getApplication()).getXXX() 来访问实际值
- 如果应用程序不断增长并且属性数量接近限制,我会将它们重构为单独的 Settings 或 Config 类 - 每个类都是它自己的 Spring bean,可从应用程序类访问。
关于spring - 如何将 Spring 特性注入(inject)到检门组件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34417457/