高级注解:@DependOn注解使用

该注解运用在类或方法上,A组件需要依赖B组件,就可以使用@DependOn(B),从容器中获取组件B,这样的话组件A就能从容器中获取到。

一、示例

1.@DependOn是用在类和方法上,比如A组件需要依赖B组件,就可以使用@DependOn(B),这样就能实现B组件先注册到容器中,然后在注册A组件; 

2.使用案例:

观察者模式情况下需要使用该注解,观察者模式三大组件:监听器(观察者)、事件源、事件;

模式的原理:监听器一直监听事件源,当事件源触发该事件,监听器就会感知并做出相应的变化;

 (1)监听器对象:

package com.dbzhang.observer;

import org.springframework.stereotype.Component;

/**
 * @program: spring-boot-2022-05
 * @description: 观察者模式:监听器
 * @author: zdb
 * @motto: 认真写好每一行代码
 * @create: 2022-12-04 20:01
 */
@Component
public class EventTListener {
    public EventTListener() {
        System.out.println("监听器启动...");
    }
}

 (2)事件源对象:

package com.dbzhang.observer;

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

/**
 *  备注:根据观察者模式,三大要素:监听器(观察者)、事件源、事件,触发机制:监听器(观察者)监测事件源,当事件源触发该事件后,监听器
 *  就会产生相应的变化; 
 * @program: spring-boot-2022-05
 * @description: 事件源
 * @author: zdb
 * @motto: 认真写好每一行代码
 * @create: 2022-12-04 19:59
 */
@Component
//@DependsOn(value = "eventTListener")
public class EventSource {

    public EventSource() {
        System.out.println("事件源启动成功...");
    }
}

(3)在项目中位置如图:

根据springboot初始化顺序是根据文件先后顺序,则会先加载事件源EventSource对象,然后在加载监听器EventTListener。

 

但是要想实现加载监听器EventTListener对象、事件源EventSource对象呢?就需要使用@DependOn注解来实现;只需要在EventSource类上使用该注解即可;

打印结果:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值