4

我有一个场景,我需要将属性从数据库或 java 对象加载到 bean 中。

考虑这个例子:

<bean id="ConfigAsstDemoBeanParent" class="gps.springconfig.DemoClass" lazy-init="true">
  <property name="demoValueFromBean" value="demoValue"></property>
  <property name="demoValueForKeyFromProperties" value="${DEMO_KEY}"></property>
</bean>

而不是${DEMO_KEY}从属性文件加载值的属性占位符,我需要从数据库中加载一个值,我使用 Java 类中的存储过程检索该值。

请向我建议一种机制,我可以在上述情况下利用它。目前我正在研究扩展 SpringMain 和/或 PropertyPlaceholderConfigurer 类并编写我自己的自定义 BootStrapper。

还请建议为上述场景编写 BootStrapper 的提示。

4

1 回答 1

7

Java配置似乎是一个很好的选择的一种情况:

@Configuration
public class Config {

    @Resource
    private DataSource dataSource;

    @Bean
    @Lazy
    public DemoClass configAsstDemoBeanParent() {
        DemoClass demo = new DemoClass();
        demo.setDemoValueFromBean("demoValue");
        demo.demoValueForKeyFromProperties( /* query the database here */);
        return demo;
    }

}

请注意,您可以将DataSource(或JdbcTemplate)注入到您的@Configuration类中,前提是它是在其他地方定义的。

于 2012-06-22T17:55:09.493 回答