spring中动态加载bean的简单实现
场景
应用于运行过程中动态加载bean,比如数据源的动态加载、定时任务的动态加载等。
环境spring3.0.5代码DynamicBeanReader ? ? ? ? ? bean动态加载接口.
DynamicBeanReaderImpl ? ?bean动态加载实现类.
DynamicResource ? ? ? ? ? ? ? ?org.springframework.core.io.Resource的实现类.
DynamicBean ? ? ? ? ? ? ? ? ? ? ?动态bean描述对象的抽象类.
DataSourceDynamicBean ? ?继承自DynamicBean,一个数据源的简单bean配置描述对象.
?
?
spring配置
?
??
?
动态加载bean接口
?
??
?
?
/** *junit测试类 */@ContextConfiguration(locations={"classpath:applicationContext-test.xml"})public class DynamicBeanReaderTests extends AbstractJUnit4SpringContextTests{@Autowiredprivate DynamicBeanReader dynamicBeanReader; @Test public void testLoadBean(){ DataSourceDynamicBean dataSourceDynamicBean = new DataSourceDynamicBean("dataSource1"); dataSourceDynamicBean.setDriverClassName("org.gjt.mm.mysql.Driver"); dataSourceDynamicBean.setUrl("jdbc:mysql://127.0.0.1:3306/youi2?useUnicode=true&characterEncoding=utf-8"); dataSourceDynamicBean.setUsername("youi2"); dataSourceDynamicBean.setPassword("youi2"); dynamicBeanReader.loadBean(dataSourceDynamicBean);// DataSource s = (DataSource)applicationContext.getBean("dataSource1"); try {PreparedStatement ps = s.getConnection().prepareStatement("select '数据库输出的数据' a from dual");ps.execute();ResultSet rs = ps.getResultSet();while(rs.next()){System.out.println(rs.getString("a"));}} catch (SQLException e) {//TODO } }}执行测试的输出:
?20110310 23:12:44 INFO DynamicBeanReaderImpl.loadBean(60) | 初始化bean【dataSource1】耗时78毫秒。
数据库输出的数据?
1 楼 yheye 2011-04-09 LZ,请问怎么把jar包动态加入进去呢? 2 楼 hustlxjaw 2011-04-25 有个工具叫jRebel,可以热加载,对spring支持的也挺好