`
菜鸟123
  • 浏览: 8094 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Spring BeanPostProcessor 初始化时加载数据到缓存

    博客分类:
  • java
 
阅读更多

      我们经常会在项目中碰到需要加载一些常量到内存中,以便不比每次需要使用时都去查询数据库,这些常量不会变动 或变动很少,但数据量又比较大的数据, 这时我们就需要把这些数据加载进内存,需要使用时直接从内从中取。 

 

首先定义一个类实现org.springframework.beans.factory.config.BeanPostProcessor接口,如图:

   

public class CacheBeanPostProcessor implements BeanPostProcessor {

	private static final Logger logger = Logger.getLogger(CacheBeanPostProcessor.class);

	public Object postProcessAfterInitialization(Object obj, String s) throws BeansException {
		try {
			if (obj instanceof ConfigService) {
				((ConfigService) obj).initSysParamMap();
			}
		} catch (Exception e) {
			logger.error(e.getMessage());
		}
		return obj;
	}

	public Object postProcessBeforeInitialization(Object obj, String s) throws BeansException {
		return obj;
	}

}

  

      然后在spring配置文件中配置bean

	<bean id="cacheBeanPostProcessor" class="com.yk.test.sys.cacheBeanPostProcessor" />

 

分享到:
评论

相关推荐

    详解使用Spring的BeanPostProcessor优雅的实现工厂模式

    在Spring框架中,BeanPostProcessor(BPP)是一个强大的接口,它允许我们自定义bean的初始化和销毁过程。BPP是在bean实例化之后,但初始化之前以及销毁之前执行特定操作的回调机制。通过实现这个接口,我们可以对...

    Spring的3级缓存和循环引用的理解.doc

    5. 如果bean需要AOP代理,如例子中的`@Transactional`注解,Spring会在bean初始化的后期,即`BeanPostProcessor#postProcessAfterInitialization`方法中添加代理。但在循环依赖的情况下,为了不阻塞bean的获取,AOP...

    《精通Spring2.X企业应用开发详解》

    以上九个步骤构成了Spring容器启动的核心流程,通过对这些步骤的详细了解,可以更好地理解Spring框架如何协调多个组件完成复杂的初始化过程。 #### 5.1.2 Spring容器高级主题 除了上述基础的启动流程之外,本章节...

    探秘Spring框架解决循环依赖的高效策略

    在Spring中,当检测到循环依赖时,它会先尝试从一级缓存获取bean,如果没有找到,就进入二级缓存查找。如果在二级缓存中找到了bean,那么就会使用这个部分初始化的bean,然后继续处理剩余的依赖。如果这个bean需要...

    Spring源码分析.docx

    在这个阶段,Spring 框架会检查 Bean 对象的依赖关系,并将其添加到依赖关系图中。此外,Spring 框架还会检查 Bean 对象的生命周期方法,例如 init-method 和 destroy-method。 4. 进行实例化 在准备工作完成后,...

    Spring_IOC详解.pdf

    在Spring的源码中,我们还可以看到如何通过`BeanPostProcessor`接口实现Bean的后处理器,用于在Bean初始化前后执行自定义操作,以及如何通过`InitializingBean`和`DisposableBean`接口实现Bean的初始化和销毁方法。...

    Spring源码refresh方法调试笔记

    `refresh` 方法是Spring框架中的一个核心方法,它主要用于初始化整个应用上下文(ApplicationContext),包括加载配置文件、创建Bean实例等重要步骤。本文将深入剖析Spring框架中`refresh`方法的具体实现流程,以及...

    Spring 面试题学习学习

    Bean首先通过构造函数实例化,然后属性被填充,接着执行初始化方法(如`init-method`指定的方法),初始化完成后调用`BeanPostProcessor`的`postProcessBeforeInitialization()`和`postProcessAfterInitialization()...

    浅谈BeanPostProcessor加载次序及其对Bean造成的影响分析

    在Spring框架中,BeanPostProcessor(BPP)是一个至关重要的组件,它允许开发者在Spring容器创建Bean实例之后和初始化之前,以及初始化之后和实例化完成之前进行额外的处理。这为自定义Bean的行为提供了强大的灵活性...

    beandemo.rar

    本篇文章将通过"beandemo.rar"这个压缩包中的示例,详细解析Spring在初始化Bean时的回调函数调用顺序,帮助读者深入理解Spring的加载机制。 首先,我们来看"beandemo"这个示例项目。它通常包含一系列配置文件(如...

    spring-framework-4-reference

    比如,可以通过实现BeanPostProcessor来在bean的初始化前后执行自定义逻辑。 classpath扫描和托管组件功能允许通过简单的注解(比如@Component, @Service等)来声明Spring管理的组件,而无需显式配置每个bean。 ...

    Spring的BeanFactory的接口注解

    - **功能**: 注册一个`BeanPostProcessor`,这些处理器会在Bean实例化之后、初始化之前或初始化之后被调用。 - **参数**: `beanPostProcessor`,实现了`BeanPostProcessor`接口的对象。 - **应用场景**: 使用`...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.6.1. 设置Bean使自动装配失效 3.3.7. 依赖检查 3.3.8. 方法注入 3.3.8.1. Lookup方法注入 3.3.8.2. 自定义方法的替代方案 3.4. bean的作用域 3.4.1. ...

    spring2.5学习PPT 传智博客

    - 谈论Bean后处理器(BeanPostProcessor)和自定义初始化逻辑。 7-14. **依赖注入和自动装配** - 依赖注入通过构造器注入、setter注入和@Resource注解进行。 - @Autowired注解自动装配依赖,基于类型匹配。 - @...

    spring核心源码详细解读

    - **`finishBeanFactoryInitialization()`**:这是整个初始化过程中最复杂的步骤,涉及到所有Bean的实例化和初始化工作。 - **`finishRefresh()`**:刷新完成后的一些清理工作。 ### 三、深入理解`refresh()`方法 ...

    spring-reference

    Bean的生命周期包括初始化、正常运行和销毁阶段,Spring提供了各种机制来定制Bean的生命周期,如通过实现特定接口或使用注解。 3. **BeanFactory与ApplicationContext** BeanFactory和ApplicationContext是Spring...

    Spring Bean生命周期&BeanDefinitions1

    4. **BeanPostProcessor**:BeanPostProcessor接口提供预初始化和后初始化方法,即`postProcessBeforeInitialization()`和`postProcessAfterInitialization()`。这两个方法在Bean初始化前后执行,可以用于额外的处理...

    Spring getBean流程图1

    这个过程涉及到多个步骤,确保Bean的正确创建、初始化以及依赖注入。以下是`getBean`方法的主要流程: 1. **开始**:当调用`ApplicationContext`或`BeanFactory`的`getBean`方法时,首先会检查请求的Bean是否已经...

    Java-spring框架面试题

    1. 一级缓存:单例池,缓存已经经历了完整的生命周期,已经初始化完成的bean对象 2. 二级缓存:缓存早期的bean对象(生命周期还没走完) 3. 三级缓存:缓存的是ObjectFactory,表示对象工厂,用来创建某个对象 ...

    SSH笔记-IOC容器中 Bean 的生命周期

    在SSHnote_Spring_9_LifeCycle这个文件中,可能包含了详细的示例代码和讲解,展示了如何创建一个实现`BeanPostProcessor`的类,并在Bean初始化和销毁时添加自定义逻辑。通过学习这部分内容,你可以更深入地理解...

Global site tag (gtag.js) - Google Analytics