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
相关推荐
Maynor99613 分钟前
Clawdbot安装教程:从零开始到接入飞书
java·数据库·飞书
小北方城市网16 分钟前
Spring Boot 多数据源与事务管理实战:主从分离、动态切换与事务一致性
java·开发语言·jvm·数据库·mysql·oracle·mybatis
roman_日积跬步-终至千里36 分钟前
【Java 并发-面试】从线程基础到企业级开发的知识点概况
java·开发语言
m0_7482331740 分钟前
C与C++:底层编程的六大核心共性
java·开发语言
NE_STOP42 分钟前
spring6-多种类型的注入方式
spring
小马爱打代码44 分钟前
Spring Boot :使用 Spring Cache 注解方式集成 Redis
spring boot·redis·spring
坊钰1 小时前
【Rabbit MQ】Rabbit MQ 介绍
java·rabbitmq
雀啼春1 小时前
Java中的数据类型
java
80530单词突击赢1 小时前
C++关联容器深度解析:set/map全攻略
java·数据结构·算法