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

 更新时间:2022年12月12日 11:31:26   作者:4343  
这篇文章主要介绍了SpringBoot自动配置原理分析,SpringBoot是我们经常使用的框架,那么你能不能针对SpringBoot实现自动配置做一个详细的介绍。如果可以的话,能不能画一下实现自动配置的流程图。牵扯到哪些关键类,以及哪些关键点

第一种

给容器中的组件加上

@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);
    }
}

控制台结果:

第二种

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

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

@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

此时,假设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自动配置实现流程详细分析的文章就介绍到这了,更多相关SpringBoot自动配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java清除u盘内存卡里的垃圾文件示例

    java清除u盘内存卡里的垃圾文件示例

    手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个文件占用了内存太大了
    2014-02-02
  • 浅谈java中集合的由来,以及集合和数组的区别详解

    浅谈java中集合的由来,以及集合和数组的区别详解

    下面小编就为大家带来一篇浅谈java中集合的由来,以及集合和数组的区别详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Mybatis工具类JdbcTypeInterceptor运行时自动添加jdbcType属性

    Mybatis工具类JdbcTypeInterceptor运行时自动添加jdbcType属性

    今天小编就为大家分享一篇关于Mybatis工具类JdbcTypeInterceptor运行时自动添加jdbcType属性,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • JavaAgent实现http接口发布方式浅析

    JavaAgent实现http接口发布方式浅析

    这篇文章主要介绍了JavaAgent实现http接口发布方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03
  • Spring Boot文件上传简单实例代码

    Spring Boot文件上传简单实例代码

    在本篇文章里小编给大家分享的是关于Spring Boot 文件上传简易教程以及相关知识点,需要的朋友们参考下。
    2019-08-08
  • 关于Java限流功能的简单实现

    关于Java限流功能的简单实现

    这篇文章主要介绍了关于Java限流功能的简单实现,在Java中,限流是一种常见的技术手段,用于控制系统的访问速率,以保护系统免受过载和滥用,需要的朋友可以参考下
    2023-07-07
  • Flyway详解及Springboot集成Flyway的详细教程

    Flyway详解及Springboot集成Flyway的详细教程

    Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里。这篇文章主要介绍了Flyway详解及Springboot集成Flyway的详细教程的相关资料,需要的朋友可以参考下
    2020-07-07
  • SpringBoot集成MyBatisPlus+MySQL的实现

    SpringBoot集成MyBatisPlus+MySQL的实现

    MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动,本文主要介绍了SpringBoot集成MyBatisPlus+MySQL的实现,感兴趣的可以了解一下
    2023-10-10
  • Java利用数组随机抽取幸运观众如何实现

    Java利用数组随机抽取幸运观众如何实现

    这篇文章主要介绍了Java利用数组随机抽取幸运观众如何实现,需要的朋友可以参考下
    2014-02-02
  • SWT(JFace)体验之FormLayout布局

    SWT(JFace)体验之FormLayout布局

    SWT(JFace)体验之FormLayout布局示例代码。
    2009-06-06

最新评论