我正在寻找将弹簧上下文中定义的属性(由propertiesFactoryBean提供)注入wicket组件的可能性。我知道使用 @SpringBean -Annotation将bean注入组件的方法,但是对于属性有什么相应的方法吗?
我的财产定义方式:
<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")
这些解决方案都不起作用。为了得到 mySpringProperty ,我使用解决方法来创建一个String类型的bean,当我用 SpringBean 注释我的组件的相应成员时,wicket正确地注入了它认为必须有更好的解决方案。
<bean id="mySpringPropertyBean" class="java.lang.String">
<constructor-arg type="java.lang.String" value="https://foobar.com" />
</bean>
注释
@SpringBean
private String mySpringPropertyBean;
答案 0 :(得分:2)
@SpringBean仅支持注入spring bean。我想有人可以实现一个@SpringValue注释来做你想要的,但据我所知,没有人做过。
我通常做的是:
答案 1 :(得分:0)
在您的Wicket类中使用@Value(“ $ {mySpringProperty}”):
@SpringBean
private PropertiesConfiguration propertiesConfiguration;
创建一个新的PropertiesConfiguration类:
@Component
public class PropertiesConfiguration {
@Value("${mySpringProperty}")
private String mySpringProperty;
//getters & setters
}
在您的检票班使用:
System.out.println("mySpringProperty=" + propertiesConfiguration.getMySpringProperty());