【SpringBoot记录】自动配置原理(2):自动配置的案例说明

案例说明

通过前面案例可以很明显感受到,SpringBoot除了做了依赖管理,还帮我们做了一些常规的配置,下面举例详细说明。

tomcat

项目可以直接启动,不需要任何配置,通过上一节发现引入了启动器中引入了spring-boot-starter-tomcat。

使用tomcat的都知道,在使用tomcat时至少都需要对端口进行配置,但这里我们没有配置,说明spring-boot-starter-tomcat已帮我们自动配置,后续会详细介绍。

Springmvc

同样的,引入了spring-webmvc。一般来说我们使用SpringMVC肯定是要配置DispacherServlet的,这里同样也没有配置,说明也为我们进行了自动配置。这里我们可以直接通过ApplicationContext对象获取ioc容器中的bean对象。

public static void main(String[] args) {
        //1、返回我们IOC容器
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);

        //2、查看容器里面的组件
        String[] names = run.getBeanDefinitionNames();
        for (String name : names) {
            System.out.println(name);
        }
}

在控制台输出中很容易找到dispacherServlet

其他常见web配置

比如characterEncodingFilter、viewResolver、multipartResolver等都可以在上述容器中看到相关对象,此处不一一举例,几乎涵盖了所有web开发常见的配置。

配置属性

上述说明了,SpringBoot能够帮我们进行自动配置,前提是我们使用其提供的默认属性,如果属性不一致,应该如何修改?例如tomcat端口要改为8888等。Spring官方提供了一些通用的属性配置说明

即我们在application.properties文件或者application.yaml中可以进行设定。实际中更常用的是application.yml文件。

上述端口设定如图,只需要在application.properties中根据官方文档进行设置:

通过点击properties文件中的属性可以跳转到org.springframework.boot.autoconfigure.web.ServerProperties类,其中包含了所有内置属性

org.springframework.boot.autoconfigure.web包下的其他包中都有对应的properties类,这些类都被@ConfigurationProperties标注,可以看出application配置文件中的配置实际是与org.springframework.boot.autoconfigure包中@ConfigurationProperties标注的类中的属性对应的。

@ConfigurationProperties

 从上面的例子也可以看出。该注解标注在类上,可以读取到properties文件中的内容,并且把它封装到JavaBean中,以供随时使用。

package com.test.boot.bean;


import lombok.Data;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;


/**
 * 只有在容器中的组件,才会拥有SpringBoot提供的强大功能
 */
@ToString
@Data
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {

    private String brand;
    private Integer price;


}

@EnableConfigurationProperties

通常用在@Configuration类上,用于启用特定配置属性类的绑定功能。任何被@ConfigurationProperties注解的beans将自动被Environment属性配置。这个注解通常与SpringApplication的外部YAML配置配合使用,以便于管理和应用配置属性。

package com.test.boot;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

@SpringBootApplication
@EnableConfigurationProperties(Car.class)
public class MainApplication {
    ...
}

可以这么理解,在此例子中:

@EnableConfigurationProperties(Car.class) 

等于

@Component
@ConfigurationProperties(prefix = "mycar")

从Spring Boot 2.2开始,推荐使用@ConfigurationPropertiesScan来代替@EnableConfigurationProperties,因为后者已经被标记为过时。

@SpringBootApplication

整个SpringBoot案例除了controller,只对pom和启动类进行了编写。前面主要介绍了pom相关修改,引入了依赖管理和自动配置的概念,后面主要对启动类中@SpringBootApplication注解进行分析,逐步深入自动配置原理。
  • 33
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值