SPRINGBOOT01_概述、入门案例、父项目依赖管理特性、@Configuration、@Import、@Conditional、@ConfigurationProperties配置绑定(三)

简介: ⑤. 底层注解@Import导入组件⑥. 底层注解@Conditional条件装配

⑤. 底层注解@Import导入组件


  • ①. @Import({User.class, DBHelper.class})给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名


  • ②. 代码展示如下


  @Import({User.class, DBHelper.class})
  @Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件
  public class MyConfig {
  }
  //1、返回我们IOC容器
  ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
  //...
  //5、获取组件
  String[] beanNamesForType = run.getBeanNamesForType(User.class);
  for (String s : beanNamesForType) {
    //com.xiaozhi.bean.User
      //user01
      System.out.println(s);
  }
  DBHelper bean1 = run.getBean(DBHelper.class);
  //ch.qos.logback.core.db.DBHelper@188cbcde
  System.out.println(bean1);


⑥. 底层注解@Conditional条件装配


  • ①. 条件装配:满足Conditional指定的条件,则进行组件注入


微信图片_20220107151700.png


②. 用@ConditionalOnMissingBean举例说明


@Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件
//有tom名字的Bean时,MyConfig类的Bean才能生效
@ConditionalOnBean(name="tom")
public class MyConfig {
    //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例
    @Bean
    //当容器中有tom组件的时候,才给注册user01
    //@ConditionalOnBean(name="tom")
    public User user01(){
        User zhangsan = new User("zhangsan", 18);
        //user组件依赖了Pet组件
        zhangsan.setPet(tomcatPet());
        return zhangsan;
    }
    //@Bean("tom")
    @Bean("tom2")
    public Pet tomcatPet(){
        return new Pet("tomcat");
    }
}


@SpringBootApplication
//等同于如下三个注解
//@SpringBootConfiguration
//@EnableAutoConfiguration
//@ComponentScan("com")//可以扫描com及com下的所有包
public class MainApplication {
    public static void main(String[] args) {
        //1.返回我们的IOC容器
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
        boolean tomFlag = run.containsBean("tom");
        System.out.println("容器中是否有tom组件"+tomFlag);//false
        boolean user01Flag = run.containsBean("user01");
        System.out.println("容器中是否有user01组件"+user01Flag);//true
        boolean tom2 = run.containsBean("tom2");
        System.out.println("容器中tom2组件:"+tom2);//true
    }
}
相关文章
|
25天前
|
Java 调度 Spring
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
44 0
|
1月前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
26 0
|
2天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
4天前
|
JSON Java Maven
Javaweb之SpringBootWeb案例之 SpringBoot原理的详细解析
Javaweb之SpringBootWeb案例之 SpringBoot原理的详细解析
8 0
Javaweb之SpringBootWeb案例之 SpringBoot原理的详细解析
|
8天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
14天前
|
Java Shell 测试技术
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
31 0
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
|
18天前
|
Java 容器
SpringBoot使用配置注解开启自动配置功能&整合spring-boot-configuration-processor
SpringBoot使用配置注解开启自动配置功能&整合spring-boot-configuration-processor
15 0
|
24天前
|
存储 Java 定位技术
SpringBoot轻松实现二维码条形码含源码案例
SpringBoot轻松实现二维码条形码含源码案例
21 1
|
25天前
|
Java 应用服务中间件
Springboot启动的时候初始化的线程池默认配置tomcat
Springboot启动的时候初始化的线程池默认配置tomcat
13 1
|
25天前
|
Java
SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
7 0