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
相关推荐
梦梦代码精7 分钟前
《LikeShop全产品技术硬核拆解:ThinkPHP8+Vue3+UniApp架构,私有化部署与二次开发实战指南》
java·低代码·系统架构·php·开源软件
一木 之林10 分钟前
C/C++ 面向对象编程(OOP)(进阶)
java·c语言·c++
摇滚侠37 分钟前
《SpringBoot 3:入门与应用实战》第 9 章 使用 WebMvc 开发应用 阅读笔记 2
java·spring boot·笔记
technology_x1 小时前
液冷超充站设备厂家哪家好?2026年功率与散热对比
java·开发语言
步行cgn1 小时前
@RestController 详解:从源码到实践
spring boot
LayZhangStrive1 小时前
Agent开发 - MCP Client使用MCP Server的几种方式(Spring AI)
java·spring ai·mcp
仓三1 小时前
从 Prompt Engineering 到 Context Engineering:2026 年 Agent 性能提升的隐藏杠杆
java·prompt·context
许彰午2 小时前
07-SqlBuilder六法
java·开发语言·低代码·架构
孙6903422 小时前
Spring 注入多例 Bean
java·spring
Jul1en_2 小时前
【Java 脚手架】封装通用工具类-3
java·开发语言·redis·缓存·ai·bootstrap·rabbitmq