【SpringBoot】的核心配置和运行原理

本文介绍SpringBoot的基本配置方法,包括入口类、核心注解@SpringBootApplication的功能和使用方式、配置文件的设置等,还介绍了如何进行外部配置及日志、Profile配置等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.基本配置

  • 1.1入口类
    Spring Boot通常有一个名为*Application的入口类,入口类里有一个main方法,这个main方法其实就是一个标准的Java应用的入口方法。在main方法中使用SpringApplication.run(HelloworldApplication.class, args),启动SpringBoot应用项目。
  • 1.2@SpringBootApplication
    是核心注解,它是一个组合注解,主要组合了@Configuration、@EnableAutoConfiguration、@ComponentScan。若不使用@SpringBootApplication注解,则可以在入口类上直接使用@Configuration、@EnableAutoConfiguration、@ComponentScan。其中@EnableAutoConfiguration让SpringBoot根据类路径中的jar包依赖为当前项目进行自动配置(如添加了spring-boot-starter-web依赖,会自动添加Tomcat和SpringMVC的依赖,并进行自动配置)。
    这里写图片描述
  • 1.3关闭特定的自动配置
    使用@SpringBootApplication注解的exclude = {DataSourceAutoConfiguration.class},例如@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
  • 1.4定制Banner
    在src/main/resources下新建一个banner.txt,通过http://patorjk.com/software/taag网站生成字符,将网站生成的字符复制到banner.txt中。
    这里写图片描述
  • 1.5Spring Boot的配置文件
    使用一个全局配置文件application.properties(对一些默认配置的配置值进行修改)或application.yml,放置在src/main/resources目录或类路径的/config下。将Tomcat的默认端口号8080修改为8090,并将默认的访问路径“/”修改为“/hello”,可以在application.properties中添加:
    server.port=8090
    server.servlet.context-path=/hello
    这里写图片描述
  • 1.6starter pom
    下面为官方提供的一些starter pom
    spring-boot-starter SpringBoot核心starter,包含自动配置、日志、yaml配置文件的支持
    spring-boot-starter-actuator 准生产特性,用来监控和管理应用
    spring-boot-starter-remote-shell 提供基于ssh协议的监控和管理
    spring-boot-starter-amqp 使用spring-rabbit来支持AMQP
    spring-boot-starter-aop 使用spring-aop和AspectJ支持面向切面编程
  • 1.7使用xml配置
    提倡零配置,即无xml配置,但是在实际项目中,可能有一些特殊要求你必须使用xml配置,可以通过Spring提供的@ImportResource来加载xml。例如@ImportResource({“classpath:some-context.xml”,”classpath:another-context.xml”})

2.外部配置

  • 2.1常规属性配置
    在常规Spring环境下,注入properties文件里的值的方式,通过@PropertySource指明properties文件的位置,然后通过@Value注入值。在SpringBoot只需要在application.properties定义属性,直接使用@Value注入即可。
application.properties
#添加常规属性配置
book.author=jello
book.name=spring boot

修改入口类代码
这里写图片描述

  • 2.2类型安全的配置(基于properties)
    通过@ConfigurationProperties将properties属性和一个bean及其属性关联,从而实现类型安全的配置。
application.properties
#添加属性配置
book.name=springboot
book.author=jello
book.price=28

类型安全的Bean
这里写图片描述
控制器类的代码
这里写图片描述
运行结果
这里写图片描述

3.日志配置
Spring Boot支持Logging、Log4J、Logback作为日志框架,无论使用那种日志框架,SpringBoot已为当前使用日志框架的控制台输出及文件输出做好了配置。默认情况下,使用Logback作为日志框架。
这里写图片描述

4.Profile配置
Profile是Spring用来针对不同的环境对不同的配置提供支持的,全局Profile配置使用application-{profile}.properties(如application-prod.properties),通过在application.properties中设置spring.profile.active=prod 来指定活动的Profile。
下面将做一个简单的演示,分为生产(prod)和开发(dev)环境,生产环境下端口号为80,开发环境下端口号为8888。
生产环境和开发环境的配置文件如下:
这里写图片描述

这里写图片描述
目录结构
这里写图片描述
在application.properties中添加
这里写图片描述
启动程序,结果为
这里写图片描述

5.SpringBoot运行原理
在application.properties中设置 debug=true ,可以查看当前项目中已启动或未启动的自动配置的报告。未启动的自动配置如下
这里写图片描述

  • 运作原理
    关于SpringBoot的运作原理,还是回归到@SpringBootApplication(组合注解,核心功能由@EnableAutoConfiguration注解提供)注解上@EnableAutoConfiguration注解的关键功能是@Import注解导入的配置功能,EnableAutoConfigurationImportSelector使用SpringFactoriesLoader.loadFactoryNames方法来扫描具有META-INF/spring.factories文件的jar包,此文件中声明了哪些自动配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值