spring-boot控制bean的创建顺序

1、order注解(不一定有效)

复制代码
org.springframework.core.annotation.Order

2、dependsOn注解(有效)

复制代码
org.springframework.context.annotation.DependsOn

3、提前将bean注册为BeanDefinition

java 复制代码
1、实现BeanDefinitionRegistryPostProcessor,将userService注册
public class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {
    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
        AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();
        beanDefinition.setBeanClass(UserService.class);
        registry.registerBeanDefinition("userService", beanDefinition);
    }
}

2、加入上下文中
public class MyApplicationContextInitializer implements ApplicationContextInitializer {

    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        applicationContext.addBeanFactoryPostProcessor(new MyBeanDefinitionRegistryPostProcessor());
    }
}

3、配置扫描生效,在resources下创建MATE-INF文件夹,在MATE-INF文件夹下创建spring.factories文件,然后加入下面的配置
org.springframework.context.ApplicationContextInitializer=com.example.springbootshutdown.MyApplicationContextInitializer
复制代码
org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor
相关推荐
小徐Chao努力1 小时前
【Langchain4j-Java AI开发】09-Agent智能体工作流
java·开发语言·人工智能
Coder_Boy_1 小时前
SpringAI与LangChain4j的智能应用-(理论篇2)
人工智能·spring boot·langchain·springai
Coder_Boy_1 小时前
SpringAI与LangChain4j的智能应用-(理论篇3)
java·人工智能·spring boot·langchain
Coder_Boy_1 小时前
基于SpringAI的智能平台基座开发-(六)
java·数据库·人工智能·spring·langchain·langchain4j
武昌库里写JAVA2 小时前
iview-CRUD模板
vue.js·spring boot·sql·layui·课程设计
伯明翰java2 小时前
Java数据类型与变量
java·开发语言
想用offer打牌2 小时前
如何开启第一次开源贡献之路?
java·后端·面试·开源·github
小许学java3 小时前
Spring原理
java·spring·生命周期·作用域·原理
教练、我想打篮球3 小时前
122 Hession,FastJson,ObjectInputStream的序列化反序列化相同引用的处理
java·config·utils
酷柚易汛4 小时前
酷柚易汛ERP 2025-12-26系统升级日志
java·前端·数据库·php