Spring Bean的优先加载方法怎么实现
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"Spring Bean的优先加载方法怎么实现",在日常操作中,相信很多人在Spring Bean的优先加载方法怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
千家信息网最后更新 2026年11月03日Spring Bean的优先加载方法怎么实现
这篇文章主要介绍"Spring Bean的优先加载方法怎么实现",在日常操作中,相信很多人在Spring Bean的优先加载方法怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Spring Bean的优先加载方法怎么实现"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
在日常的业务开发中,绝大多数我们都是不关注 bean 的加载顺序,然而如果在某些场景下,当我们希望某个 bean 优于其他的 bean 被实例化时,往往并没有我们想象中的那么简单。
启动类指定方式
在实际的 SpringBoot 开发中,我们知道都会有一个启动类,如果希望某个类被优先加载,一个成本最低的简单实现,就是在启动类里添加上依赖
@SpringBootApplicationpublicclass Application { // 使用构造方法的方式来优先加载DemoBean public Application(DemoBean demoBean) { demoBean.print(); } public static void main(String[] args) { SpringApplication.run(Application.class); }}请注意上面的构造方法,如果我们希望在应用启动之前,demoBean就已经被加载了,那就让 Application 强制依赖它,所以再 Application 的 bean 初始化之前,肯定会优先实例化demoBeanInstantiationAwareBeanPostProcessorAdapter方式
借助InstantiationAwareBeanPostProcessorAdapter来实现在 bean 实例化之前优先加载目标 bean。
publicclass ClientBeanProcessor extends InstantiationAwareBeanPostProcessorAdapter implements BeanFactoryAware { private ConfigurableListableBeanFactory beanFactory; @Override public void setBeanFactory(BeanFactory beanFactory) { if (!(beanFactory instanceof ConfigurableListableBeanFactory)) { thrownew IllegalArgumentException( "AutowiredAnnotationBeanPostProcessor requires a ConfigurableListableBeanFactory: ">上面的实现比较简单,借助beanFactory#getBean来手动触发 bean 的实例,通过实现BeanFactoryAware接口来获取BeanFactory,因为实现InstantiationAwareBeanPostProcessor接口的类会优先于 Bean 被实例,以此来间接的达到我们的目的
接下来的问题就是如何让它生效了,我们这里使用 Import 注解来实现
@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@Import({ClientAutoConfiguration.class, ClientBeanProcessor.class})public@interface EnableOrderClient {}package com.spring.master.spring.bean.initbean;import lombok.Getter;import org.springframework.core.env.Environment;import javax.annotation.PostConstruct;/** * @author Huan Lee * @version 1.0 * @date 2020-09-25 11:58 * @describtion 业精于勤,荒于嬉;行成于思,毁于随。 */public class DatasourceLoader { @Getter private String mode; public DatasourceLoader(Environment environment) { this.mode = environment.getProperty("config.save.mode"); System.out.println("init DatasourceLoader for:" + mode); } @PostConstruct public void loadResourcres() { System.out.println("开始初始化资源"); }}package com.spring.master.spring.bean.initbean;import org.springframework.stereotype.Component;/** * @author Huan Lee * @version 1.0 * @date 2020-09-25 12:01 * @describtion 业精于勤,荒于嬉;行成于思,毁于随。 */@Componentpublic class DemoBean { public DemoBean() { System.out.println("demo bean init!"); } public void print() { System.out.println("print demo bean "); }}package com.spring.master.spring.bean.initbean;import org.springframework.context.annotation.Import;import java.lang.annotation.*;/** * @author Huan Lee * @version 1.0 * @date 2020-09-25 11:59 * @describtion 业精于勤,荒于嬉;行成于思,毁于随。 */@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@Import({ClientAutoConfiguration.class, ClientBeanProcessor.class})public @interface EnableOrderClient {}package com.spring.master;import com.spring.master.spring.bean.initbean.DemoBean;import com.spring.master.spring.bean.initbean.EnableOrderClient;import com.spring.master.spring.bean.lifecycle.Person;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;@EnableOrderClient@SpringBootApplicationpublic class SpringMasterApplication { public SpringMasterApplication(DemoBean demoBean) { demoBean.print(); } public static void main(String[] args) { SpringApplication.run(SpringMasterApplication.class, args); }}启动服务输出:init DatasourceLoader for:null开始初始化资源com.spring.master.spring.bean.initbean.DatasourceLoader@458342d3demo bean init!print demo bean到此,关于"Spring Bean的优先加载方法怎么实现"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
方法
实例
学习
业精于勤
行成于思
方式
接下来
就是
接口
更多
资源
问题
面的
帮助
开发
实用
最低
业务
场景
实际
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手磨咖啡
华服互联网科技怎么样
苏州找大状互联网科技有限公司
互联网和科技技术
互联网科技财经
工业互联网科技新基建
互联网科技社
上海喔噻互联网科技
丰台科技园 互联网
苏州大垚互联网科技
火传媒上海互联网科技
互联网科技股有哪些
互联网科技大会案例
全球顶尖互联网科技公司
长沙互联网科技
上海科技产业互联网平台
山东子淼互联网科技有限公司
信承诺互联网科技有限公司
银川新华互联网科技学校原画
互联网科技创业有什么好项目
咖啡
互联网科技行业发展
金融科技创新监管互联网金融
合肥互联网科技公司
受益于互联网科技的高速发展
广州新华互联网科技学校电竞方面
威龙国际互联网科技公司
互联网科技资金流入
从那以后互联网科技有限公司
普陀区互联网教育科技管理办法