【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注解进行分析,逐步深入自动配置原理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/610851.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python之数据分析基础

导言: “21世纪的竞争是数据的竞争,谁掌握数据,谁就掌握未来”。如何将大量看似杂乱无章的数据进行聚合,并发现潜在的规律也变得越来越重要。本文将先说明数据分析的步骤,再通过python完成实例数据的处理、分析最终展…

【初阶数据结构】顺序表OJ题讲解

前言 📚作者简介:爱编程的小马,正在学习C/C,Linux及MySQL。 📚本文收录与初阶数据结构系列,本专栏主要是针对时间、空间复杂度,顺序表和链表、栈和队列、二叉树以及各类排序算法,持…

PyTorch 图像篇

计算机视觉技术是一门包括计算机科学与工程、神经生理学、物理学、信号处理、认知科学、应用数学与统计等多学科的综合性科学技术, 是人工智能的一个重要分支, 目前在智能安防、自动驾驶汽车、医疗保健、生成制造等领域具有重要的应用价值。 计算机视觉…

常用控件(一)

常用控件 一 按钮类控件QPushButtonQRadioButtonQCheckBox 按钮类控件 QPushButton 使用QPushButton表示一个按钮,这是我们当前最熟悉的一个控件了; QPushButton继承自QAbstractButton,这个类是个抽象类,是其他按钮类的父类; QAbstractButt…

anaconda虚拟环境pytorch安装

1.先创建conda的虚拟环境 conda create -n gputorch python3.102.激活刚刚创建好的虚拟环境 conda activate gputorch3.设置镜像源 这一步是后面安装pytorch相关包所需要的来源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple4.查看电脑的显卡…

跨界内容营销:Kompas.ai如何帮助你的品牌打破行业边界

在当今多元化的市场环境中,跨界营销已成为品牌拓展影响力和用户基础的重要策略。通过跨界合作,品牌能够打破行业界限,创造独特的用户体验,从而提升品牌形象和市场竞争力。本文将深入分析跨界营销的作用,详细介绍Kompas…

SliderCaptcha滑块验证码功能

SliderCaptcha滑块验证码功能 资源文件及文档&#xff1a;https://gitee.com/LongbowEnterprise/SliderCaptcha <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><…

mysql 其他类型转换为BIT

看官网说明,BIT没什么特殊之处。但实际操作却不能将任何其他类型字段转为BIT,下面两个都报语法错误 CAST(column AS BIT(1)) AS aa , CAST(column AS BIT) AS bb, BIT value则模式是VARBINARY b1 as cc, -- cc为VARBINARY类型 下面是《高性能MySQL(第四版)》中关于BIT类型的…

cPanel中如何卸载已安装的SSL证书

我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板&#xff0c;由于临时搭建了一个测试的个人的纯静态的网站&#xff0c;不想要安装SSL证书&#xff0c;但是据这边了解HosteaseLinux虚拟主机是只要域名解析指向主机IP&#xff0c;并且绑定到主机&#xff0c…

centos7.9升级4.19内核

centos默认的内核版本是3.10 通过命令 uname -a 输出系统的详细信息 在部署k8s集群时使用默认的3.10版本的内核&#xff0c;容易出各种奇奇怪怪的问题、可以理解为docker和k8s与该内核版本不兼容&#xff0c;所以在部署k8s集群时&#xff0c;务必要升级内核&#xff0c;这里…

引入RabbitMQ

前置条件 docker 安装 mq docker run \-e RABBITMQ_DEFAULT_USERdudu \-e RABBITMQ_DEFAULT_PASS123456 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network hmall \-d \rabbitmq:3.8-management可能会出现&#xff1a;docker: Er…

福昕PDF阅读器取消手型工具鼠标点击翻页

前言&#xff1a; 本文介绍如何关闭福昕PDF阅读器取消手型工具鼠标点击翻页&#xff0c;因为这样真的很容易误触发PDF翻页&#xff0c;使用起来让人窝火。 引用&#xff1a; NA 正文&#xff1a; 新版的福昕PDF阅读器默认打开了“使用手型工具阅读文章”这个勾选项&#x…

五、Redis五种常用数据结构-SET

Redis的Set结构存储的数据和Java中的HashSet类似&#xff0c;都是无序且不重复的。其底层的数据结构有两种&#xff0c;一是当value为整数时&#xff0c;且数据量不大时采用intset来存储。其他情况使用dict字典存储。集合中最多存储232-1(40多亿)个数据。 1、常用命令 sadd k…

Amesim基础篇-热仿真常用模型库-Air Conditioning-Pipes

前言 基于上文对空调库各个元件的介绍&#xff0c;本文进一步将其中的管路展开。 管路介绍 1 摩擦阻力管&#xff08;R&#xff09;&#xff1a; 具有阻力特性的管路&#xff0c;通过管长以及管截面计算阻力。 2 可调节阻力管&#xff08;R&#xff09;&#xff1a; 只具有…

字节薪资解密,张一鸣啥等级?

大家好&#xff0c;我是白露啊。 之前说BAT&#xff0c;可能是指百度、阿里、腾讯&#xff0c;但是现在&#xff0c;这个 B&#xff0c;大多数时候指的是字节跳动了。 随着抖音系产品的流量持续升温&#xff0c;字节跳动已经是一个毋庸置疑的互联网大厂了&#xff0c;不管是想…

小阳的戒S笔记

文章目录 写在前面2024年5月8日21:12:172024年5月9日21:48:242024年5月10日08:04:141、记录昨夜之身体变化2、自身制定之计划1.此亦乃要事&#xff0c;特定问了度娘与GPT&#xff0c;找时间还得咨询专业医师。2.通过跑步宣泄&#xff0c;同时锻炼身体3.我不会有压力&#xff0c…

HFSS学习-day4-建模操作

通过昨天的学习&#xff0c;我们已经熟悉了HFSS的工作环境&#xff1b;今天我们来讲解HFSS中创建物体模型的县体步骤和相关操作。物体建模是HFSS仿真设计工作的第一步&#xff0c;HFSS中提供了诸如矩形、圆面、长方体圆柱体和球体等多种基本模型(Primitive)&#xff0c;这些基本…

Docker学习二(Centos):Docker安装并运行redis(成功运行)

文章目录 前言一、下载并挂载1. 拉取镜像2. 创建挂载目录3. 下载redis.conf文件4. 赋予权限5. 修改redis.conf 默认配置 二、docker运行redis三、检查redis运行状态四、navicat链接redis 前言 一、下载并挂载 1. 拉取镜像 docker pull redis2. 创建挂载目录 fengfanli是我自…

Sarcasm detection论文解析 |基于混合自动编码器的模型对社交媒体平台进行讽刺检

论文地址 论文地址&#xff1a;Electronics | Free Full-Text | Sarcasm Detection over Social Media Platforms Using Hybrid Auto-Encoder-Based Model (mdpi.com) 论文首页 笔记框架 基于混合自动编码器的模型对社交媒体平台进行讽刺检 &#x1f4c5;出版年份:2022 &#x…

5.08.7 CMT: Convolutional Neural Networks Meet Vision Transformers

1. 介绍 将基于 Transformer 的架构应用于视觉领域&#xff0c;并在图像分类、目标检测和语义分割等各种任务中取得了有希望的结果。 Vision Transformer (ViT)是第一个用纯 Transformer 替代传统 CNN 主干的工作。输入图像&#xff08;2242243&#xff09;首先被分割成196个不…