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
相关推荐
校招VIP3 小时前
[校大]27届东华理工大学JAVA简历:中厂简历通过率30%
java·秋招·校招·实习·产品岗·27届
老白干3 小时前
基于 Spring AOP 的操作日志记录:以 DeptController 增删接口为例
java·python·spring
Boop_wu4 小时前
SpringBoot 集成阿里云短信认证服务(个人)
spring boot·后端·阿里云
晚安code4 小时前
Java编程规范避坑指南:阿里开发手册15条强制规约实战解析
java·后端
小蒜学长5 小时前
“守望自然”招募志愿者环保行动网站的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
萧瑟余晖5 小时前
Java深入解析篇十八之响应式编程
java·开发语言
IKUN家族5 小时前
Spring MVC(五)
java·spring·mvc
weixin_BYSJ19876 小时前
【java项目分享】springboot阅读推荐平台10600
java·javascript·spring boot·python·django·flask·php
小 黄 鸡6 小时前
JVM 核心总结
java
一路向北North6 小时前
Spring AI(11) :ChatPDF-向量数据库、PDF处理、向量写入和向量搜索
数据库·人工智能·spring