当前位置: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