当前位置:Gxlcms > 
数据库问题 > 
Spring容器初始化数据(数据库)BeanPostProcessor的应用
                     
                    
                        Spring容器初始化数据(数据库)BeanPostProcessor的应用
                        
                            时间:2021-07-01 10:21:17
                            帮助过:23人阅读
							                        
                     
                    
                    
                     class PropUtil 
implements BeanPostProcessor{
    
    public static Map<String, Object> map = 
new HashMap<String, Object>
();
    
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) 
throws BeansException {
        if("dataSource"
.equals(beanName)){
            DataSource ds =
 (DataSource)(bean);
            Connection conn = 
null;
       PreparedStatement pm = null;
            try {
                conn =
 ds.getConnection();
                pm = conn.prepareStatement("select * from model"
);
                ResultSet rs =
 pm.executeQuery();
                while(rs.next()){
                    System.out.println(rs.getString("modelId"
));
                    System.out.print(rs.getString("modelName"
));//这里可以针对于不同的数据,保存在对应的map中做静态数据加载,方便其他方法调用
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                try {
                    conn.close();
            pm.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }                
            }
        }
        return bean;
    }
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) 
throws BeansException {
        return bean;
    }
    
}
5、刷新数据
  1)因为数据存在变动的情况,固写入一个刷新机制
  2)将对应的操作方式加入到线程里面,这样只需要启动一次服务器,就可以实现数据和配置的更新
6、问题:
  1)此方式会对所有bean加载进行一次过滤,在初始化启动的会后会造成相应的效率启动问题
  2)我在利用线程实现5分钟刷新静态变量的更新的时候,存在只加载一次,线程没有再启动的问题
  
Spring容器初始化数据(数据库)BeanPostProcessor的应用
标签:解释   factory   model   throws   override   getc   ati   class   post