我们经常会在项目中碰到需要加载一些常量到内存中,以便不比每次需要使用时都去查询数据库, 如,一些国家信息,省份信息,地址信息等 不会变动 或变动很少,但数据量又比较大的数据, 这时我们就需要把这些数据加载进内存,需要使用时直接从内从中取。 下面是代码:
Dao 以下 我就不发了。
首先定义一个类,在这个类中进行调用DAO查询数据库 ,加载出数据
public class StartOnLoadService {
public static Map<String,List> dictionaryInfoMap = new HashMap<String, List>(); //保存国籍信息
private CountryService countryService; //受Spring 管理的Service 方法 调用Dao取数据
/**
* Spring 容器初始化时加载
*/
public void loadData() {
List optionList = countryService.getAllCountry();
dictionaryInfoMap.put("nationalMap", optionList);
}
public CountryService getCountryService() {
return countryService;
}
public void setCountryService(CountryService countryService) {
this.countryService = countryService;
}
}
然后定义一个类 实现接口 BeanPostProcessor
public class PBSTrackManagerPostProcessor implements BeanPostProcessor {
public Object postProcessAfterInitialization(Object obj, String arg1)
throws BeansException {
if(obj instanceof StartOnLoadService) {
((StartOnLoadService)obj).loadData(); //调用方法加载数据
}
return obj;
}
public Object postProcessBeforeInitialization(Object arg0, String arg1)
throws BeansException {
return arg0;
}
}
Spring 配置
<!-- 自动加载国家信息到 内存 -->
<bean id="pbsTrackManagerPostProcess" class="com.mangocity.vacationhotel.business.action.PBSTrackManagerPostProcessor"/>
<bean id="startOnLoadService" class="com.mangocity.vacationhotel.business.service.impl.StartOnLoadService">
<property name="countryService" ref="countryService"/>
</bean>
就这样在Spring 启动时 数据就会被加载到 上面 StartOnLoadService 中的 dictionaryInfoMap 中。
/////////////////////////////分割线/////////////////////////////////////////////////////////////////////////////////////////////
下面把国籍信息显示在页面上:
public class OptionManager {
/**
* 功能:生成国籍select表单下的option选项的字符串
* @param value 设置为选中状态的option的值
*/
public static String generateOptionString(long value) {
List optionList = StartOnLoadService.dictionaryInfoMap.get("nationalMap");
StringBuffer optionString = new StringBuffer();
Country country = null;
if(null != optionList) {
for(int i = 0; i<optionList.size()&&optionList.get(i)!=null; i++) {
country = (Country)optionList.get(i);
if( value== country.getId()) {
optionString.append("<option value='" + country.getId() + "' selected>" + country.getName() + "</option>");
} else {
optionString.append("<option value='" + country.getId() + "' >" + country.getName() + "</option>");
}
}
}
return optionString.toString();
}
}
JSP页面使用:
<select name="fellow.nation" id="nation" style="width:110px;" >
<%=OptionManager.generateOptionString(70007)%> <!-- 默认选中 为 "Z-中国"-->
</select>
分享到:
相关推荐
本篇文章主要介绍了Spring BeanPostProcessor接口使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
NULL 博文链接:https://747017186.iteye.com/blog/2370422
spring使用模板模式,在bean的创建过程中安插了许多锚点,用户寻找对应的锚点,通过重写方法介入到bean的创建过程当中。本节通过重写这些锚点,学习如何使用BeanPostProcessor、获取各类BeanAware并且理清bean的生命...
主要介绍了详解使用Spring的BeanPostProcessor优雅的实现工厂模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1.18 不重复配置——利用Spring通用化配置 1.19 @Value注入Properties 错误的使用案例 1.20 @Value注入Properties 使用错误的案例 1.21 扩展SpringMVC以支持更精准的数据绑定 1.22 扩展SpringMVC以支持更精准的数据...
应用程序启动:应用程序启动时,Spring框架会加载并初始化所需的配置文件和类。 配置加载:Spring框架会读取并加载应用程序的配置文件,例如XML配置文件或基于注解的配置类。 依赖注入:Spring框架使用依赖注入...
com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean...
2.7. 移植到Spring 2.0 2.7.1. 一些变化 2.7.1.1. Jar包 2.7.1.2. XML配置 2.7.1.3. Deprecated的类和方法 2.7.1.4. Apache OJB 2.7.1.5. iBatis 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. 控制反转容器 ...
2.7. 移植到Spring 2.0 2.7.1. 一些变化 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. 控制反转容器 3.1. 简介 3.2. 容器和bean的基本原理 3.2.1. 容器 3.2.2. 实例化容器 3.2.3. 多种bean 3.2.4....
6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...
3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 3.4.4. 自定义作用域 ...
6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...
spring的生命周期及BeanPostProcessor的使用,注解方式创建bean 及使用Autowried标签关联类的属性 ,泛型依赖注入的使用 spring-3 演示使用动态代理模式实现面向切面编程 使用注解方式进行AOP编程及使用配置xml方式...
通过spring 的BeanPostProcessor 将对象注入到spring之前创建一个代理对象注入到spring容器中,通过@autowired 注入的对象就是指定的代理对象内容
第一部分 Spring framework 概述..5 第1 章 Spring Framework 介绍..6 1.1 依赖注入和控制反转.6 1.2 模块6 1.2.1 核心容器.7 1.2.2 数据访问/ 整合..7 1.2.3 Web ..8 1.2.4 AOP...
在此篇文章开始之前,如果读者对BeanAware、BeanPostProcessors还不够熟悉熟悉,强烈建议先阅读一下这篇文章:spring BeanPostProcessor 生命周期 protected Object doCreateBean(final String beanName, final ...
结合 JSTL <spring:bind> 标签 数据绑定的几个方法 <spring:message> 标签 <spring:transform> 标签 其它 View 层 除了 JSP View 层技术之外,您还可以使用其它的 View 层技术,或建立...
主要介绍了Spring中的后置处理器BeanPostProcessor详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了Java的Spring框架的BeanPostProcessor发布处理器,Spring是Java的SSH三大web开发框架之一,需要的朋友可以参考下