可以自动重新加载“数据库”bean吗?

时间:2014-01-16 13:46:54

标签: spring spring-mvc javabeans

是否有可能创建一些持有数据库数据的bean,并且在更新数据库时,必要的bean(而不是整个上下文!)会自动更新?

背景是我最近将旧的Web应用程序迁移到Spring Framework和Hibernate。在迁移之前,更新数据库表时,会更新预定义的单例集。我还没有在Spring找到一个很好的简单解决方案。

/ Bagerth

上下文:

<beans:bean id="systems" class="." factory-method="createInstance">  
    <beans:constructor-arg ref="customers"/>  
</beans:bean> 

豆:

public class Systems {
    public static ArrayList<System> createInstance(ArrayList<Customer> customers) {
        ArrayList<System> systems = new ArrayList<System>();
        // code to populate systems ...
        return systems;
    }
}

1 个答案:

答案 0 :(得分:1)

乍一看,可能会使用这种方法:

请注意,重载方法是预先定义的方法,可以对其单例进行重载工作。

@Component
public class MyReloader {

    @Autowired
    AService aService;

    @Autowired
    BService bService;

    @Scheduled(fixedRate = 2 * 1000)
    public void reload() {
        aService.reload();
        bService.reload();
    }

}

另一种方法(异步),您实现ApplicationListener并触发自定义事件,迫使单个数据库重新加载。