SpringBoot自动配置实现流程详细分析

作者:4343 时间:2023-06-23 13:35:45 

第一种

给容器中的组件加上

@ConfigurationProperties注解即可

测试:

@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
   private String brand;
   private Integer price;
   private Integer seatNum;
   public Integer getSeatNum() {
       return seatNum;
   }
   public void setSeatNum(Integer seatNum) {
       this.seatNum = seatNum;
   }
   public String getBrand() {
       return brand;
   }
   public void setBrand(String brand) {
       this.brand = brand;
   }
   public Integer getPrice() {
       return price;
   }
   public void setPrice(Integer price) {
       this.price = price;
   }
   @Override
   public String toString() {
       return "Car{" +
               "brand='" + brand + '\'' +
               ", price=" + price +
               ", seatNum=" + seatNum +
               '}';
   }
   public Car() {
   }
}

在application.properties中属性:

mycar.seatNum = 4
mycar.brand = BMW
mycar.price = 100000

即可给之后new 的Car 对象自动配置。

运行:

public class MainApplication {
   public static void main(String[] args) {
       //返回springboot中的ioc容器
       ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
       Car car = run.getBean("car", Car.class);
       System.out.println(car);
   }
}

控制台结果:

SpringBoot自动配置实现流程详细分析

第二种

第一种的情况下是自己写的类作为组件,实现自动装配的过程;

但有时候使用第三方类的时候无法将其设置为自己的组件,所以就需要用

@EnableConfigurationProperties + @ConfigurationProperties

将Car类删除@Component注解,此时Car类已经不是组件了:

11 usages
@ConfigurationProperties(prefix = "mycar " )
public class Car {
3 usages
private String brand ;
3 usages
private Integer price ;
3 usages

SpringBoot自动配置实现流程详细分析

此时,假设Car是第三方提供的类:

对于第三方的类 想要其作为组件就需要@Bean注解,就和之前的SSM项目中配置的bean

标签一样:

SSM中的配置文件中:

<bean id="car" class="xxx.xxx.xxx.Car">
       <property name="brand" value=""/>
       <property name="price" value=" "/>
       <property name="seatNum" value=" "/>
   </bean>

就等同于SpringBoot中配置类下的:

@Bean
   public Car car(){
       Car car = new Car();
       return car;
   }

其中属性的赋值就需要在Car类上增加

@ConfigurationProperties(prefix = "mycar")注解

最后在该配置类上使用

@EnableConfigurationProperties(Car.class)注解开启即可
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(Car.class)
public class CarAutoConfiguration {
   @Bean
   public Car car(){
       Car car = new Car();
       return car;
   }
}

控制台显示结果一样:

SpringBoot自动配置实现流程详细分析

来源:https://blog.csdn.net/weixin_42196338/article/details/128090652

标签:SpringBoot,自动配置
0
投稿

猜你喜欢

  • 如何优雅的处理Spring Boot异常信息详解

    2023-11-29 09:50:02
  • 详解Android Studio 3.0的新特性与适配

    2023-04-29 05:15:05
  • 关于Java集合框架面试题(含答案)上

    2021-06-02 13:29:44
  • spring web.xml指定配置文件过程解析

    2023-05-15 01:32:40
  • MyBatis-Plus代码生成器的使用详解

    2022-09-04 23:14:40
  • WPF实现动画效果(六)之路径动画

    2022-02-05 01:42:15
  • SpringBoot接口中如何直接返回图片数据

    2023-04-22 13:10:24
  • MyBatis中不建议使用where 1=1原因详解

    2021-08-09 23:25:55
  • 代码分析Android实现侧滑菜单

    2022-04-02 16:38:45
  • Android Studio自动提取控件Style样式教程

    2022-01-29 14:09:55
  • java多线程实现下载图片并压缩

    2023-01-17 22:28:34
  • Java线程中sleep和wait的区别详细介绍

    2021-08-27 02:23:12
  • 在Eclipse安装Spring boot插件的步骤(图文)

    2023-01-14 05:04:05
  • Mybatis-plus多数据源配置的两种方式总结

    2023-07-24 05:22:48
  • 浅谈SpringBoot资源初始化加载的几种方式

    2022-03-09 08:14:34
  • C#控件picturebox实现图像拖拽和缩放

    2023-08-09 08:23:05
  • 解析Mybatis判断表达式源码分析

    2022-12-25 19:49:37
  • Springboot动态切换数据源的具体实现与原理分析

    2022-11-24 13:45:26
  • WCF和Remoting之间的消息传输

    2023-04-15 01:01:20
  • winform实现限制及解除鼠标移动范围的方法

    2023-07-17 22:11:51
  • asp之家 软件编程 m.aspxhome.com