Springboot 注解 @DependsOn

作用

@DependsOn用来指定当前bean依赖的bean,spring在创建bean的时候,如果bean之间没有依赖关系,那么spring容器很难保证bean实例创建的顺 序,如果想确保容器在创建某些bean之前,需要先创建好一些其他的bean,可以通过@DependsOn来 实现,@DependsOn可以指定当前bean依赖的bean,通过这个可以确保@DependsOn指定的bean 在当前bean创建之前先创建好。

使用范围:任意类型、方法。

参数:value:string类型的数组,用来指定当前bean需要依赖的bean名称,可以确保当前容器在创建被@DependsOn标注的bean之前,先将value指定的多个bean先创建好。

定义

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DependsOn {
    String[] value() default {};
} 

使用

1、和@Compontent一起使用于类上

下面定义3个bean: service1, service2, service3;service3需要依赖其他两个bean,需要确保容器在创建service3之前需要先将其它两个bean创建好。

@Component
public class Service1 {
    public Service1(){
        System.out.println("create service1");
    }
}
@Component
public class Service2 {
    private Service2(){
        System.out.println("create service2");
    }
}
@DependsOn({"service1", "service2"})
@Component
public class Service3 {
    public Service3(){
        System.out.println("create service3");
    }

    public void test(){
        System.out.println("this is test");
    }
}

测试:

@SpringBootTest
public class injectTest {
  
    @Autowired
    private Service3 service3;

    @Test
    public void test(){
        service3.test();
    }
}

结果输出:

create service1
create service2
create service3

从输出结果可以看,spring容器在创建service3之前,先将service1和service2给创建好了

原创文章,作者:jiafegn,如若转载,请注明出处:https://www.techlearn.cn/archives/161

Previous 2022年8月15日
Next 2022年9月2日

相关推荐

  • SpringBoot 单元测试

    简介 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库,在 Spring Boot 2.2.0 版本之前,spring-boot-starter…

    springboot 2023年4月2日
    242
  • springboot 注解 @ComponentScan

    作用 @ComponentScan用于批量注册bean,这个注解会让spring去扫描某些包及其子包中所有的类,然后将满足一定条件的类作为bean 注册到spring容器中。主要使…

    springboot 2022年11月8日
    218
  • SpringBoot 整合SpringSecurity认证

    简介 Spring Security 是Spring家族中的一个安全管理框架。相比与另外一个安全框架shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 —般Web应用的…

    2023年12月31日
    424
  • Springboot 注解大全-@Import

    作用 @Import可以用来批量导入需要注册的各种类,如普通的类、配置类,完成普通类和配置类中所有bean注册到spring容器中。作用范围:作用于类、注解 定义 参数 value…

    springboot 2022年8月15日
    184
  • SpringBoot自定义注解与使用

    简介 注解是一种能添加到Java代码中的元数据,方法,类,参数与包都可以使用注解进行修饰,可以将注解看为一种特殊的标记,在Java编译或运行过程中将有这种特殊标记的部分进行特殊处理…

    springboot 2024年1月25日
    254
  • SpringBoot 整合Redis

    添加依赖 在pom.xml文件添加redis的依赖,如下: 配置 在application.yml文件中添加Redis相关的配置项,如下所示: 案例 1、字符串元素 2、List元…

    springboot 2023年3月26日
    121
  • Springboot注解-@Component

    作用 作用:@Component的作用是把普通的类实例化到Spring容器中。基于@Component注解有三个扩展,分别是:@Repository、@Service、@Contr…

    springboot 2022年8月3日
    184
  • Springboot 注解 @Resource

    作用 和@Autowired注解类似,也是用来注入依赖对象的,spring容器会对bean中所有的字段、方法进行遍历,标注有@Resouce注解的,都会进行注入。@Autowire…

    springboot 2022年9月14日
    269
  • SpringBoot 整合Mybatis

    简介 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBat…

    2024年8月28日
    309
  • SpringBoot 整合Mybatis-Plus

    简介 MyBatis-Plus是一个MyBatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发,提高效率而生。 添加依赖 注意:添加Mybatis-Plus即可…

    springboot 2023年3月26日
    131