springboot~ApplicationContextAware与@Autowired注解

  • ApplicationContextAware是一个接口,它提供一个方法setApplicationContext,当spring注册完成之后,会把ApplicationContext对象以参数的方式传递到方法里,在方法里我们可以实现自己的逻辑,去获取自己的bean,当前对接的断言等;一般用在被封装的工具包,starter包中,方便给其它开发人员调用。
  • @Autowired是直接给开发人员用的,直接注入对接类型的bean的,开箱即用,对应的注解还有@Qualifier,或者直接使用@Resource注解来实现按beanName的注入。

例子

LindContext

@Component
public class LindContext {
    public void print(){
        System.err.println("lind-context print.");
    }
}

LindAware

public class LindAware implements ApplicationContextAware {
    ApplicationContext applicationContext;
    LindContext lindContext;

    public void contextPrint() {
        this.lindContext.print();
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
        if (this.applicationContext.getBeansOfType(LindContext.class).isEmpty()) {
            throw new IllegalArgumentException("未加载或者未发现LindContext的bean,请保证它可以正常加载到Spring容器.");
        }
        this.lindContext = this.applicationContext.getBean(LindContext.class);
    }
}

LindConfig

@Configuration
public class LindConfig {
    @Bean
    public LindAware testAware() {
        return new LindAware();
    }
}

测试

@RunWith(SpringRunner.class)
@SpringBootTest()
public class TestAware {
    @Autowired
    LindAware lindAware;

    @Test
    public void print() {
        lindAware.contextPrint();
    }
}

当前如果没有LindContext的bean被注册时,会在LindAware中抛出对应的异常,来提示给开发人员

springboot~ApplicationContextAware与@Autowired注解

Original: https://www.cnblogs.com/lori/p/16671782.html
Author: 张占岭
Title: springboot~ApplicationContextAware与@Autowired注解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576060/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 商企网络拓扑的搭建

    前段时间因为工作项目需要模拟搭建客户环境的网络拓扑结构用于验证某款网关产品的功能, 因为不是专业的网管,对于计算机网络的实践也相对较少,所以在组件网络拓扑时遇到了不少的坑,做下记录…

    数据库 2023年6月6日
    0138
  • Redis-数据结构

    Redis key-value结构组织 首先,Redis使用了一个全局哈希表来保存所有的键值对。这个全局哈希表,也就是一个存放哈希桶(entry)的数组。Redis可以用哈希算法算…

    数据库 2023年6月11日
    0103
  • 3. 视图-触发器-存储过程-索引

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    088
  • MySQL–数据过滤(AND、OR、IN、NOT操作符)

    MySQL允许给出多个WHERE子句。这些子句可以两种方式使用:以AND子句的方式或OR子句的方式使用。 1、组合WHERE子句 此SQL语句检索由供应商1003制造且价格小于等于…

    数据库 2023年6月16日
    0126
  • Java面向对象(下)作业

    首先我把题目先列到这里,可以仔细看一下题。 (1)设计一个名为Geometric的几何图形的抽象类,该类包括: ①两个名为color、filled属性分别表示图形颜色和是否填充。 …

    数据库 2023年6月11日
    0167
  • MySQL语句与正则表达式

    正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式,过滤SELECT检索出的数据…

    数据库 2023年6月16日
    0114
  • 翻译 | Kubernetes 将改变数据库的管理方式

    作者:Álvaro Hernández 当技术决策人考虑在 Kubernetes 上部署数据库时,面临的第一个问题就是:” Kubernetes 有应对有状态服务的能力…

    数据库 2023年5月24日
    0152
  • Matplotlib(基本用法)

    Matplotlib 是数据分析绘图的常见模块,可以算是 2D-绘图(Python)领域使用最广泛的套件,可以将数据图形化,并且提供多样化的输出格式,利于数据的显示并分析。 接下来…

    数据库 2023年6月16日
    0126
  • MySQL函数2

    聚合函数(只有一个结果) [En] Aggregate function (only one result) 聚合函数的介绍 在目前的MySQL下不可以嵌套使用 聚合函数的常用类型…

    数据库 2023年5月24日
    0142
  • IntelliJ IDEA 断开svn连接

    1 设置菜单 2 进入pluglns 菜单,点击 browse repositonries….. 3 搜索 svn disconnect,然后安装插件 4 安装插件后,…

    数据库 2023年6月6日
    0185
  • proxySQL with MGR

    环境信息 hostname IP port role comm ms81 192.168.188.81 3399 master ms82 192.168.188.82 3399 s…

    数据库 2023年6月16日
    094
  • Python–迭代器

    区分:迭代器 Iterator 和可迭代对象It…

    数据库 2023年6月9日
    0124
  • Kubernetes入门,使用minikube 搭建本地k8s 环境

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    095
  • JavaScript进阶内容——jQuery

    JavaScript进阶内容——jQuery 我们在前面的文章中已经掌握了JavaScript的全部内容,现在让我们了解一下JavaScript库 这篇文章主要是为了为大家大致讲解…

    数据库 2023年6月14日
    0128
  • Java面试题(十)–Spring Cloud

    1 基础知识篇 1、什么是微服务架构? 微服务架构是一种架构模式或者说是架构风格,它提倡将单一应用程序划分成一组小的服务。每个服务运行在其独立的自己的进程中服务之间相互配合、相互协…

    数据库 2023年6月16日
    0134
  • 自然对数

    https://zhuanlan.zhihu.com/p/71928040自然对数 https://www.youtube.com/watch?v=mZE0RmCbDe8 本文来自…

    数据库 2023年6月11日
    0139
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球