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
相关推荐
YA3337 分钟前
java设计模式二、工厂
java·开发语言·设计模式
金色天际线-14 分钟前
Nginx 优化与防盗链配置指南
java·后端·spring
我爱挣钱我也要早睡!1 小时前
Java 复习笔记
java·开发语言·笔记
AD钙奶-lalala3 小时前
Mac OS上搭建 http server
java
皮皮林5517 小时前
SpringBoot 全局/局部双模式 Gzip 压缩实战:14MB GeoJSON 秒变 3MB
java·spring boot
weixin_456904277 小时前
Spring Boot 用户管理系统
java·spring boot·后端
趁你还年轻_7 小时前
异步编程CompletionService
java
DKPT7 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
sibylyue7 小时前
Guava中常用的工具类
java·guava
奔跑吧邓邓子7 小时前
【Java实战㉞】从0到1:Spring Boot Web开发与接口设计实战
java·spring boot·实战·web开发·接口设计