@DependsOn限制Bean的初始化顺序

阅读数:16 评论数:0

跳转到新版页面

分类

python/Java

正文

@DependsOn 注解可以应用于类或方法上,用于声明当前 Bean 依赖于另一个 Bean,这样可以确保 Bean 的初始化顺序。

一、示例

假设我们有两个 @Configuration 类:FirstConfigurationSecondConfiguration,并且我们希望 SecondConfigurationFirstConfiguration 执行完之后再执行。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FirstConfiguration {

    @Bean
    public String firstBean() {
        System.out.println("FirstConfiguration is initialized");
        return "First Bean";
    }
}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;

@Configuration
@DependsOn("firstConfiguration")
public class SecondConfiguration {

    @Bean
    public String secondBean() {
        System.out.println("SecondConfiguration is initialized");
        return "Second Bean";
    }
}

FirstConfiguration 中的 firstBean 将会在 SecondConfiguration 中的 secondBean 之前初始化。

二、注意事项

1、Bean名称

@DependsOn 注解中使用的是 Bean 的名称,而不是类名。因此,如果你使用 @DependsOn("firstConfiguration"),确保 FirstConfiguration 的 Bean 名称是 firstConfiguration。默认情况下,Spring 会使用类名的首字母小写作为 Bean 名称。

2、Bean顺序

@DependsOn 注解确保了 Bean 的初始化顺序,但不影响 @Configuration 类的加载顺序。@DependsOn 注解只影响 Bean 的实例化顺序。

三、更复杂的依赖关系

如果你有更复杂的依赖关系,可能需要对多个 Bean 使用 @DependsOn 注解。例如:

@Configuration
public class AnotherConfiguration {

    @Bean
    @DependsOn({"firstBean", "secondBean"})
    public String anotherBean() {
        System.out.println("AnotherConfiguration is initialized");
        return "Another Bean";
    }
}



相关推荐

一、request uri部分 @PathVariable 获取路径参数,形如url/{id} 二、request header部分 @RequestHeade

一、概述 一个项目使用多个数据库(无论是主从复制--读写分离还是分布式数据库结构)的重要性变得越来越明显,整合的多数据源有两种方式:分包和aop。 1、SqlSessionTemplate SqlSe

一、概述 PageHelper是开源免费的mybatis第三方分页插件。 二、使用 1、pom引入 <dependency> <groupId>com.github.pageh

一、日志框架的介绍 Spring Boot 2.*默认采用slf4j+logback的形式,slf4j是个通用的日志门面,logback就是个具体的日志框架了。

一、问题解决方式 @PostMapping("/insert") @ResponseBody private ResultVO insert1(@RequestParam Map<String, St

JJWT 全称Java Json Web Token。 而JWT是一种在两方之间传输信息的方法,在jwt的主体中编码的信息被称为claims。jwt的扩展形式是json,因此每个c

POM依赖 &lt;dependency&gt; &lt;groupId&g

一、概述 @EnableConfigurationProperties注解的作用是:让使用了@ConfigurationProperties注解的类生效,并且将该类注入到IOC容器中,交由IOC容器进

一、概述 Druid(德鲁伊)是Java语言中的数据库连接池,Spring Boot 2.x默认使用Hikari数据源,虽然HikariCP的速度稍快,但是,Druid能够提供强大的监控和扩展功能。

1、配置文件的格式 springboot可以识别两种格式的配置文件,分别是yml文件与properties文件,我们可以将application.properties文件换成a