首页 > 其他分享 >springboot开发日记(5)

springboot开发日记(5)

时间:2023-02-07 20:44:58浏览次数:40  
标签:容器 springboot Pet ConditionalOnBean 开发 Tom 组件 日记 user01

@Conditional注解

当满足@Conditional中的条件时,才进行组件注入

@Conditional有许多派生注解,例如:

@ConditionalOnBean:当容器中存在指定的bean组件的时候才进行组件注入

@ConditionalOnClass:当容器中存在指定的类才进行组件注入

@ConditionalOnResource:当项目类路径下存在某些资源的时候才进行组件注入

 

在MyConfig.java中进行修改

@ConditionalOnBean(name="user01")
@Bean("Tom")
public Pet tomscatPet(){
    return new Pet("tomcat");

@ConditionalOnBean(name="user01")的作用是只有容器中有名字为user01的组件时才注册组件Tom。

同时在main函数中添加以下语句:

MyConfig bean=run.getBean(MyConfig.class);
System.out.println(run.containsBean("Tom"));

其中run.containsBean("Tom")的作用是在容器中寻找名字为Tom的组件,结果为true,说明成功注册了Tom这一组件。

如果将上面@ConditionalOnBean的条件改为其他,例如111,则main函数执行结果为false,说明没有注册Tom组件。


注意:@ConditionalOnBean严格按照顺序执行。如果把MyConfig.java中的两个bean语句交换顺序:

@ConditionalOnBean(name="user01")
    @Bean("Tom")
    public Pet tomcatPet(){
        return new Pet("tomcat");
    }
    @Bean//给容器中添加组件,以方法名作为组件的id。返回类型就是组件类型。返回的值就是组件在容器中的实例
    public User user01(){
        User zhangsan= new User("zhangsan",18);
//        zhangsan.setPet(tomcatPet());
        return zhangsan;
    }

则main函数执行结果仍为false,因为在执行@ConditionalOnBean时容器中还没有注册user01这一组件,也就不会注册Tom组件。但是user01仍然会在这之后继续注册。因此最后容器中只存在user01这一组件。

 

标签:容器,springboot,Pet,ConditionalOnBean,开发,Tom,组件,日记,user01
From: https://www.cnblogs.com/tarorat/p/17099579.html

相关文章

  • 开发&渗透日记-前言
    懂进攻,知防守;先正向,后逆向这是在B站跟的PHP教程,接下来要开发的是一个论坛系统,准备在开发过程中发现漏洞然后理解其真正原理具体代码写完后会上传到Github,欢迎你们找到BUG......
  • springboot开发日记(4)
    @import可以通过@import向容器中导入组件,将组件添加到容器中。例如创建一个Test对象publicclassTest{privateStringname;//构造函数省略}} 在My......
  • 关闭selenium开发中的chromedriver控制台
    采用selenium操作浏览器执行自动化操作的场景时,在使用pyinstaller打包成exe文件后,会有chromedriver.exe或geckodriver.exe的console命令行窗口。我们打包成exe文件一......
  • spi~在插件开发过程中的使用
    spi是原生java的组件,通过META-INF/services目录进行注册,通过ServiceLoader进行加载,一般可以用在组件开发中,你在公用组件中封装好逻辑,将个性化的部分抽象出一个接口,接口通过......
  • STM32MP157开发板Linux+Qt项目实战:智慧家庭
    stm32mp157开发板FS-MP1A是华清远见自主研发的一款高品质、高性价比的Linux+单片机二合一的嵌入式教学级开发板。开发板搭载ST的STM32MP157高性能微处理器,集成2个Cortex-A7......
  • 互联网医院开发|监管平台对接
    互联网医院已经被全国各地的好多医院启用了,给医院和患者都带了大大的便利,而且很多地方的互联网医院也已经对接的医保系统,可以实现线上看病也走医保的流程,现在监管平台也已经......
  • 在 SpringBoot 项目中简单实现 JWT 验证
    使用SpringBoot提供api的时候,我更喜欢使用jwt的方式来做验证。网上有会多SpringSecurity整合jwt的,也有Shiro整合jwt的,感觉有点复杂。这里分享一下自己在项......
  • 训练日记 2018.12.14
        哎,这几天被树形背包搞懵了,一开始感觉没学到啥,做一个题看一个题解,每个题单个来看都能看懂,但是遇到一个新题就不会了,而且你用上一个题的做法做,依旧不对,网上的题解......
  • 开发代码质量差的解决办法
    首先问题分析:了解一下代码差的原因,主要以下几个方面:(1)需求理解错误(2)开发能力不足(3)提测之前不自测(4)自测只停留在表面(5)遇......
  • 开发&运维如何对接口响应时间慢问题,快速定界排查?
    01问题背景自建机房,生产环境上某接口耗时超过2s,接口实现逻辑包含:数据库读写下游api调用数据统计开发本地自测,接口耗时却只有106ms。于是开发问运维:“生产环境的网络确定没......