从数据库或Java对象动态加载spring bean属性)

kan*_*008 3 spring web-services properties

我有一个场景,我需要将数据库或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>
Run Code Online (Sandbox Code Playgroud)

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

请建议我一个可以用于上述场景的机制.目前我正在调查扩展SpringMain和/或PropertyPlaceholderConfigurer类并编写我自己的自定义BootStrapper.

另外,请为上述方案提供有关编写BootStrapper的提示.

Tom*_*icz 5

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

}
Run Code Online (Sandbox Code Playgroud)

请注意,您可以注入DataSource(或JdbcTemplate)您的@Configuration类,只要它在别处定义.