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
相关推荐
絔宝1 分钟前
Eclipse配置 Maven 国内镜像
java·eclipse·maven
无关86888 分钟前
Spring Bean的生命周期
spring·bean的生命周期
虾说羊8 分钟前
Spring Boot前后端分离项目部署
java·spring boot·后端
vx_bisheyuange24 分钟前
基于SpringBoot的青年公寓服务平台
前端·vue.js·spring boot·毕业设计
小王不爱笑13229 分钟前
SpringBoot 项目新建的五种方式详细笔记
spring boot·笔记·后端
愤怒的代码38 分钟前
从开发调试到生产上线:全维度 Android 内存监控与分析体系构建
android·java·kotlin
悟能不能悟1 小时前
java HttpServletRequest 设置header
java·开发语言
悟空码字1 小时前
SpringBoot整合FFmpeg,打造你的专属视频处理工厂
java·spring boot·后端
独自归家的兔1 小时前
Spring Boot 版本怎么选?2/3/4 深度对比 + 迁移避坑指南(含 Java 8→21 适配要点)
java·spring boot·后端
trayvontang1 小时前
Spring Gateway核心概念、流程及原理
spring·gateway·spring gateway