我们经常会在项目中碰到需要加载一些常量到内存中,以便不比每次需要使用时都去查询数据库,这些常量不会变动 或变动很少,但数据量又比较大的数据, 这时我们就需要把这些数据加载进内存,需要使用时直接从内从中取。
首先定义一个类实现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(BPP)是一个强大的接口,它允许我们自定义bean的初始化和销毁过程。BPP是在bean实例化之后,但初始化之前以及销毁之前执行特定操作的回调机制。通过实现这个接口,我们可以对...
5. 如果bean需要AOP代理,如例子中的`@Transactional`注解,Spring会在bean初始化的后期,即`BeanPostProcessor#postProcessAfterInitialization`方法中添加代理。但在循环依赖的情况下,为了不阻塞bean的获取,AOP...
以上九个步骤构成了Spring容器启动的核心流程,通过对这些步骤的详细了解,可以更好地理解Spring框架如何协调多个组件完成复杂的初始化过程。 #### 5.1.2 Spring容器高级主题 除了上述基础的启动流程之外,本章节...
在Spring中,当检测到循环依赖时,它会先尝试从一级缓存获取bean,如果没有找到,就进入二级缓存查找。如果在二级缓存中找到了bean,那么就会使用这个部分初始化的bean,然后继续处理剩余的依赖。如果这个bean需要...
在这个阶段,Spring 框架会检查 Bean 对象的依赖关系,并将其添加到依赖关系图中。此外,Spring 框架还会检查 Bean 对象的生命周期方法,例如 init-method 和 destroy-method。 4. 进行实例化 在准备工作完成后,...
在Spring的源码中,我们还可以看到如何通过`BeanPostProcessor`接口实现Bean的后处理器,用于在Bean初始化前后执行自定义操作,以及如何通过`InitializingBean`和`DisposableBean`接口实现Bean的初始化和销毁方法。...
`refresh` 方法是Spring框架中的一个核心方法,它主要用于初始化整个应用上下文(ApplicationContext),包括加载配置文件、创建Bean实例等重要步骤。本文将深入剖析Spring框架中`refresh`方法的具体实现流程,以及...
Bean首先通过构造函数实例化,然后属性被填充,接着执行初始化方法(如`init-method`指定的方法),初始化完成后调用`BeanPostProcessor`的`postProcessBeforeInitialization()`和`postProcessAfterInitialization()...
在Spring框架中,BeanPostProcessor(BPP)是一个至关重要的组件,它允许开发者在Spring容器创建Bean实例之后和初始化之前,以及初始化之后和实例化完成之前进行额外的处理。这为自定义Bean的行为提供了强大的灵活性...
本篇文章将通过"beandemo.rar"这个压缩包中的示例,详细解析Spring在初始化Bean时的回调函数调用顺序,帮助读者深入理解Spring的加载机制。 首先,我们来看"beandemo"这个示例项目。它通常包含一系列配置文件(如...
比如,可以通过实现BeanPostProcessor来在bean的初始化前后执行自定义逻辑。 classpath扫描和托管组件功能允许通过简单的注解(比如@Component, @Service等)来声明Spring管理的组件,而无需显式配置每个bean。 ...
- **功能**: 注册一个`BeanPostProcessor`,这些处理器会在Bean实例化之后、初始化之前或初始化之后被调用。 - **参数**: `beanPostProcessor`,实现了`BeanPostProcessor`接口的对象。 - **应用场景**: 使用`...
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. ...
- 谈论Bean后处理器(BeanPostProcessor)和自定义初始化逻辑。 7-14. **依赖注入和自动装配** - 依赖注入通过构造器注入、setter注入和@Resource注解进行。 - @Autowired注解自动装配依赖,基于类型匹配。 - @...
- **`finishBeanFactoryInitialization()`**:这是整个初始化过程中最复杂的步骤,涉及到所有Bean的实例化和初始化工作。 - **`finishRefresh()`**:刷新完成后的一些清理工作。 ### 三、深入理解`refresh()`方法 ...
Bean的生命周期包括初始化、正常运行和销毁阶段,Spring提供了各种机制来定制Bean的生命周期,如通过实现特定接口或使用注解。 3. **BeanFactory与ApplicationContext** BeanFactory和ApplicationContext是Spring...
4. **BeanPostProcessor**:BeanPostProcessor接口提供预初始化和后初始化方法,即`postProcessBeforeInitialization()`和`postProcessAfterInitialization()`。这两个方法在Bean初始化前后执行,可以用于额外的处理...
这个过程涉及到多个步骤,确保Bean的正确创建、初始化以及依赖注入。以下是`getBean`方法的主要流程: 1. **开始**:当调用`ApplicationContext`或`BeanFactory`的`getBean`方法时,首先会检查请求的Bean是否已经...
1. 一级缓存:单例池,缓存已经经历了完整的生命周期,已经初始化完成的bean对象 2. 二级缓存:缓存早期的bean对象(生命周期还没走完) 3. 三级缓存:缓存的是ObjectFactory,表示对象工厂,用来创建某个对象 ...
在SSHnote_Spring_9_LifeCycle这个文件中,可能包含了详细的示例代码和讲解,展示了如何创建一个实现`BeanPostProcessor`的类,并在Bean初始化和销毁时添加自定义逻辑。通过学习这部分内容,你可以更深入地理解...