08 @DependsOn

文章目录

1 介绍

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DependsOn {

	String[] value() default {};

}

作用:
用于指定某个类的创建依赖的bean对象先创建。spring中没有特定的bean的加载顺序,使用此注解可以指定bean的加载顺序

属性:
value:用于指定bean的唯一标识,被指定的bean会在当前的bean创建之前加载。

2 演示

定义两个组件:事件源,事件监听器

package study.wyy.spring.anno.dependson.event;

import org.springframework.stereotype.Component;

/**
 * @author by wyaoyao
 * @Description
 * @Date 2020/11/22 11:31 上午
 */
@Component
public class Event {

    public Event() {
        System.out.println("Event事件 创建了");
    }
}


package study.wyy.spring.anno.dependson.event;

import org.springframework.stereotype.Component;

/**
 * @author by wyaoyao
 * @Description
 * @Date 2020/11/22 11:31 上午
 */
@Component
public class EventListener {

    public EventListener() {
        System.out.println("EventListener 创建了。。。");
    }
}

配置类

package study.wyy.spring.anno.dependson.config;

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

/**
 * @author by wyaoyao
 * @Description
 * @Date 2020/11/22 11:27 上午
 */
@Configuration
@ComponentScan("study.wyy.spring.anno.dependson")
public class SpringConfig {
}

测试

  @org.junit.Test
    public void test01(){
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
        // 启动容器
        context.start();
    }
}

输出

Event事件 创建了
EventListener 创建了。。。

先创建了事件,再创建了监听器,但是一般期望先创建监听器,在创建事件

DependsOn注解,标注在创建事件之前先创建事件的监听器

package study.wyy.spring.anno.dependson.event;

import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;

/**
 * @author by wyaoyao
 * @Description
 * @Date 2020/11/22 11:31 上午
 */
@Component
// 注意我们使用的componentScan,bean的默认标识就是简单类名首字母小写
@DependsOn("eventListener")
public class Event {

    public Event() {
        System.out.println("Event事件 创建了");
    }
}

在测试

EventListener 创建了。。。
Event事件 创建了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值