Java程序设计:spring boot(3)——spring boot核心配置

目录

1 设置 Banner 图标

1.1 Banner 图标⾃定义

1.2 Banner 图标关闭

2 Spring Boot 配置⽂件

3 Starter 坐标 & ⾃动化配置

3.1 Starter坐标配置

3.1.1 Web starter

3.1.2 Freemarker Starter & Thymeleaf starter

3.1.3 JavaMail邮件发送 Starter

3.1.4 引⼊AOP环境

3.2 自动化配置

3.2.1 SpringBoot Starter坐标版本查看

3.2.2 Spring Boot⾃动化配置

4 Profile 配置

5 日志配置

5.1 项目中日志信息输出

5.2 日志输出格式配置


1 设置 Banner 图标

       在搭建 Spring Boot 项⽬环境时,程序启动后会在控制台打印醒⽬的 SpringBoot 图标,图标描述了 Spring Boot 版本信息,这是 Spring Boot 项⽬与 Spring 项⽬启动区别较⼤的地⽅,Spring Boot 通过 默认 Banner 在程序启动时显示应⽤启动图标,当然图标我们也可以进⾏⾃定义。

1.1 Banner 图标⾃定义

       Spring Boot 项⽬启动时默认加载 src/main/resources ⽬录下的 banner.txt 图标⽂件,如果该⽬录 ⽂件未提供,则使⽤ Spring Boot 默认。在 main ⽬录下新建 resources 资源⽬录,并在该⽬录下新建 banner.txt ⽂本⽂件,可以设置⾃定义图标。

打开⽹址: http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something

在线⽣成图标对应⽂本并将⽂本内容copy 到 banner.txt 中

启动Spring Boot 应⽤打印如下:

1.2 Banner 图标关闭

       如果启动时不想要看到启动图标 ,这⾥也可以通过代码进⾏关闭操作,修改 Starter Application设置 BannerMode 值为 Banner.Mode.OFF,启动 Spring Boot 应⽤关闭图标输出功能即可

@SpringBootApplication
public class StarterApplication {
 public static void main(String[] args) {
 SpringApplication springApplication = new
SpringApplication(StarterApplication .class);
 // 设置 banner 图标关闭
 springApplication.setBannerMode(Banner.Mode.OFF);
 springApplication.run();
 }
}

2 Spring Boot 配置⽂件

       Spring Boot 默认会读取全局配置⽂件,配置⽂件名固定为:application.properties 或 application.yml,放置在 src/main/resources 资源⽬录下,使⽤配置⽂件来修改 SpringBoot ⾃动配置 的默认值。

在 resources 资源⽬录下添加 application.properties ⽂件,配置信息如下:

## 项⽬启动端⼝号配置
server.port=8989
## 项⽬访问上下⽂路径
server.servlet.context-path=/mvc
## 数据源配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/hr?
useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

或者 application.yml ⽂件:

## 端⼝号 上下⽂路径
server:
 port: 8989
 servlet:
 context-path: /mvc
## 数据源配置
spring:
 datasource:
 type: com.mchange.v2.c3p0.ComboPooledDataSource
 driver-class-name: com.mysql.cj.jdbc.Driver
 url: jdbc:mysql://127.0.0.1:3306/hr
 username: root
 password: root

3 Starter 坐标 & ⾃动化配置

3.1 Starter坐标配置

       Spring Boot 引⼊了全新的Starter坐标体系,简化企业项⽬开发⼤部分场景的 Starter pom,应⽤程 序引⼊指定场景的 Start pom 相关配置就可以消除 ,通过 Spring Boot 就可以得到⾃动配置的 Bean。

3.1.1 Web starter

       使⽤ Spring MVC 来构建 RESTful Web 应⽤,并使⽤ Tomcat 作为默认内嵌容器

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>

3.1.2 Freemarker Starter & Thymeleaf starter

       集成视图技术,引⼊ Freemarker Starter , Thymeleaf Starter

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

3.1.3 JavaMail邮件发送 Starter

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

3.1.4 引⼊AOP环境

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

相关starter系列坐标参考:

传统的 maven 坐标这⾥同样适⽤,如果引⼊传统 maven 坐标需要考虑相关配置类的编写。

如果引⼊相关starter坐标这⾥不存在,可以到这里搜索。

3.2 自动化配置

3.2.1 SpringBoot Starter坐标版本查看

       前⾯介绍了 SpringBoot Starter 相关坐标,引⼊ Starter 坐标来简化应⽤环境的配置。这⾥以环境搭 建 spring-boot-starter-web 坐标来简单分析 SpringBoot ⾃动化配置过程。

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>

       这⾥引⼊的 web 环境坐标不像传统的maven坐标那样包含坐标的版本号,项⽬中引⼊的 starter 系列 坐标对应的版本库统⼀由⽗⼯程坐标统⼀控制即项⽬中引⼊的 parent 标签。

<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <!--
 ⽗类项⽬统⼀对项⽬依赖版本统⼀控制!
 --> 
 <version>2.2.2.RELEASE</version>
</parent>

       这⾥ spring-boot-starter-parent 继承 spring-boot-dependencies 项⽬,在 spring-bootdependencies 项⽬中定义了 spring-boot-starter-web 坐标的版本!(spring-boot-dependencies 项 ⽬中定义了当前 SpringBoot版本下各个 starter 坐标版本以及依赖的其他坐标版本)

3.2.2 Spring Boot⾃动化配置

       Spring Boot的项⽬⼀般都会有 *Application 的⼊⼝类,⼊⼝类中提供 main ⽅法,这是⼀个标准的 Java 应⽤程序的⼊⼝⽅法。@SpringBootApplication 注解是 Spring Boot 的核⼼注解,它其实是⼀个组合注解:

@SpringBootApplication

       可以看出该注解也是⼀个组合注解,组合了 @Configuration 注解,对于Spring Boot应⽤, @SpringBootConfiguration 注解属于Boot 项⽬的配置注解也是属于⼀个组合注解,Spring Boot 项⽬ 中推荐使⽤@SpringBootConfiguration 注解,因为其组合了 @Configuration 注解。

@EnableAutoConfiguration

       @EnableAutoConfiguration 注解组合了 @AutoConfigurationPackage、 @Import(Auto ConfigurationImportSelector.class) 注解。

       @AutoConfigurationPackage 底层也是⼀个 @Import(AutoConfigurationPackages.Registrar. class),其会把启动类的包下组件都扫描到Spring容 器中。

       @Import(AutoConfigurationImportSelector.class) ⾃动配置的核⼼类 AutoConfigurationImport Selector.class,该类导⼊⼤量的⾃动配置类,debug可以发现,其读取的是 classpath下的 META-INF/spring.factories 下配置⽂件。

       以 WebMvcAutoConfiguration 为例,可以看出该类使⽤ @Configuration 注解进⾏标注其为⼀个配 置类。

       当然 spring.factories ⽂件中配置类默认不会都⽣效,具体哪些配置类⽣效由配置类上标注的 @ConditionalOnClass 注解来决定,这⾥了解下 @ConditionalOnClass 注解含义。

@ConditionalOnBean // 当给定的在bean存在时,则实例化当前Bean
@ConditionalOnMissingBean // 当给定的在bean不存在时,则实例化当前Bean
@ConditionalOnClass // 当给定的类名在类路径上存在,则实例化当前Bean
@ConditionalOnMissingClass // 当给定的类名在类路径上不存在,则实例化当前Bean

       意味着 WebMvcAutoConfiguration 配置类⽣效需要环境中存在 Servlet.class, Dispatcher Servlet.class,WebMvcConfigurer.class 实例,配置类才会⽣效。

从以上分析可以得出如下结论:

       Spring Boot 通过 maven 中的 starter 导⼊了所需场景下的 jar 包,并通过主启动类上的 @Spr ingBootApplication 中的 @EnableAutoConfiguration 读取了类路径下的 METAINF/spring.factori es下 EnableAutoConfiguration 的配置类,这些配置类使⽤ @ConditionalOnClass 来标注,根据@ConditionalOnClass 标注的约束条件来引⼊⾃动化的环境配置。

4 Profile 配置

       Profile 是 Spring ⽤来针对不同环境对不同配置提供⽀持的全局 Profile 配置使⽤ application- {profile}.yml,⽐如 application-dev.yml ,application-test.yml。

通过在 application.yml 中设置 spring.profiles.active=test|dev|prod 来动态切换不同环境,具体配置 如下:

application-dev.yml 开发环境配置⽂件:

server:
 port: 8989

application-test.yml 测试环境配置⽂件:

server:
 port: 9999

application-prod.yml ⽣产环境配置⽂件:

server:
 port: 8686

application.yml 主配置⽂件:

## 环境选择配置
spring:
 profiles:
 active: dev

启动Starter 查看控制台输⼊效果:

修改 application.yml 设置 active 值为 prod:

## 环境选择配置
spring:
 profiles:
 active: prod

启动Starter 再次查看控制台输⼊效果:

5 日志配置

       在开发企业项⽬时,⽇志的输出对于系统 bug 定位⽆疑是⼀种⽐较有效的⽅式,也是项⽬后续进⼊⽣ 产环境后快速发现错误解决错误的⼀种有效⼿段,所以⽇志的使⽤对于项⽬也是⽐较重要的⼀块功能。

       Spring Boot 默认使⽤ LogBack ⽇志系统,如果不需要更改为其他⽇志系统如 Log4j2 等,则⽆需多 余的配置,LogBack 默认将⽇志打印到控制台上。如果要使⽤ LogBack,原则上是需要添加 dependency 依赖的。

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

       因为新建的 Spring Boot 项⽬⼀般都会引⽤ spring-boot-starter 或者 spring-boot-starterweb ,⽽这两个起步依赖中都已经包含了对于 spring-boot-starter-logging 的依赖,所以,⽆需额 外添加依赖。

5.1 项目中日志信息输出

Starter 启动类中添加 Log ⽇志类,控制台打印⽇志信息。

package com.xxxx;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Starter {
 private static Logger logger = LoggerFactory.getLogger(Starter.class);
6.5.2. ⽇志输出格式配置
修改 application.yml ⽂件添加⽇志输出格式信息配置,可以修改 application.yml ⽂件来控制控制台
⽇志输出格式,同时可以设置⽇志信息输出到外部⽂件。
更多⽇志输出,参考官⽹
7. Freemarker & Thymeleaf 视图技术集成
7.1. Freemarker 视图集成
 public static void main(String[] args) {
 logger.info("SpringBoot 应⽤开始启动...");
 SpringApplication.run(Starter.class);
 }
}

5.2 日志输出格式配置

       修改 application.yml ⽂件添加⽇志输出格式信息配置,可以修改 application.yml ⽂件来控制控制台 ⽇志输出格式,同时可以设置⽇志信息输出到外部⽂件。

logging:
 pattern:
 console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger- %msg%n"
 level: debug
 file:
 path: "."
 name: "springboot.log"

更多⽇志输出,参考官⽹。

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

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

相关文章

mysql--表的约束

目录 理解表的约束和操作 如何理解&#xff1f; 1、空属性null 2、默认值default 3、列描述comment 4、自动填充zorefill 5、主键primary key &#xff08;1&#xff09;创建表时指定可以 &#xff08;2&#xff09;创建表后指定key &#xff08;3&#xff09;删除主…

注册函数和回调函数使用讲解

1.概念 注册和回调函数在C语言编程中非常常见&#xff0c;也经常用到。注册和回调的机制也大量使用在Linux内核中。学会使用注册和回调函数是C语言开发者应当掌握的一项编程技能。 函数的本质在内存上体现的是地址。我们知道函数的地址后&#xff0c;就能够调用这个函数。 …

ESP32移植Openharmony外设篇(1)MQ-2烟雾传感器

外设篇 实验箱介绍 旗舰版实验箱由2部分组成&#xff1a;鸿蒙外设模块&#xff08;支持同时8个工作&#xff09;、鸿蒙平板。 其中&#xff0c;鸿蒙平板默认采用RK3566方案。 OpenHarmony外设模块采用底板传感器拓展板方式&#xff0c;底板默认采用ESP32方案&#xff0c;也…

部署Qwen2.5-7b大模型详解

部署Qwen2.5-7b大模型详解 本文参考教程&#xff1a;https://qwen.readthedocs.io/en/latest/getting_started/quickstart.html 下载模型 https://modelscope.cn/organization/qwen 搜索 qwen2.5-7b 可以看到它提供了六个模型&#xff0c;以满足不同的需求&#xff0c;从下…

HBuilder X中搭建Vue-cli项目组件和路由以及UI库使用(二)

一、创建组件 &#xff08;1&#xff09;在vj1项目src|右键|vue文件 &#xff08;2&#xff09;组件常用模版 <!--该标签用于写HTML代码,必须有一个根标签,如下<div>是根标签--> <template> <div>首页</div> </template><!--该标签用…

c++算法第3天

本篇文章包含三道算法题&#xff0c;难度由浅入深&#xff0c;适合新手练习哟 目录 第一题 题目链接 题目解析 代码原理 代码编写 本题总结 第二题 题目链接 题目解析 代码原理 代码编写 第三题 题目链接 题目解析 代码原理 代码编写 第一题 题目链接 [NOIP2…

【word】页眉横线无法取消

小伙伴们日常想在页眉里加横线&#xff0c;直接双击页眉&#xff0c;然后在页眉横线里选择自己喜欢的横线样式就可以了。 但今天我遇到的这个比较奇特&#xff0c;有些页有这个横线&#xff0c;有些页没有&#xff0c;就很奇怪。 最后排查完&#xff0c;发现是只有标题2的页…

拓数派创始人冯雷出席联合国人居署《未来城市顾问展望2024》 报告结题专家会

近日&#xff0c;联合国人居署中国未来城市顾问委员会在内蒙古鄂尔多斯市国际会展中心召开《未来城市顾问展望2024&#xff1a;数字城市治理》报告结题会暨走进鄂尔多斯市活动。拓数派创始人、董事长兼首席执行官冯雷&#xff08;Ray Von&#xff09;应邀出席本次活动&#xff…

《计算机视觉》—— 疲劳检测

文章目录 一、疲劳检测实现的思想二、代码实现 一、疲劳检测实现的思想 了解以下几篇文章有助于了解疲劳检测的方法 基于dlib库的人脸检测 https://blog.csdn.net/weixin_73504499/article/details/142977202?spm1001.2014.3001.5501 基于dlib库的人脸关键点定位 https://blo…

个人博客搭建 | Hexo框架

文章目录 1.Hexo安装2.创建博客3.将博客通过GitHub来部署4.更换主题 1.Hexo安装 Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown&#xff08;或其他标记语言&#xff09;解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。搭建Hexo首先要…

基于vue框架的的大连金州红星社区物业管理系统dg6co(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;楼栋信息,住户,社区投诉,设备报修,报修完成,车位信息,缴费信息,房屋信息,维修工,保安,来访人员,缴费申诉,公共设备,设备类型,消防设备,公共场地 开题报告内容 基于Vue框架的大连金州红星社区物业管理系统的设计与实现开题报告 一、研究…

如果使用 Iptables 配置端口转发 ?

现实生活中&#xff0c;港口转发就像在一个大型公寓大楼里告诉送货司机该去哪里。通常情况下&#xff0c;该建筑群的正门是不对外开放的。但如果里面有人想要快递&#xff0c;他们可以告诉保安让司机进来&#xff0c;并指引他们到特定的公寓。 类似地&#xff0c;在计算机网络…

Android复杂问题分析工具bugreportz详解

文章目录 bugreportz详细介绍功能与作用使用方法生成详细报告检查进度bugreportz 的优势分析报告 如何分析1. 解压 ZIP 文件2. 分析主要文件2.1 bugreport.txt2.2 logcat.txt2.3 kernel.log / last_kmsg2.4 events.log2.5 traces.txt2.6 dumpstate_board.txt 3. 工具支持4. 重点…

Axure重要元件三——中继器添加数据

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 本节课&#xff1a;中继器添加数据 课程内容&#xff1a;添加数据项、自动添加序号、自动添加数据汇总 应用场景&#xff1a;表单数据的添加 案例展示&#xff1a; 步骤…

SpringColoud GateWay 核心组件

优质博文&#xff1a;IT-BLOG-CN 【1】Route路由&#xff1a; Gateway的基本构建模块&#xff0c;它由ID、目标URL、断言集合和过滤器集合组成。如果聚合断言结果为真&#xff0c;则匹配到该路由。 Route路由-动态路由实现原理&#xff1a; 配置变化Apollo 服务地址实例变化…

No.17 笔记 | XXE漏洞:XML外部实体注入攻击

1. XXE漏洞概览 XXE&#xff08;XML External Entity&#xff09;是一种允许攻击者干扰应用程序对XML输入处理的漏洞。 1.1 XXE漏洞比喻 想象XML解析器是一个听话的机器人&#xff0c;而XXE就是利用这个机器人的"过分听话"来获取不应该获取的信息。 1.2 XXE漏洞危…

vue综合指南(六)

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:vue综合指南 目录 101、Vue 框架怎么实现对象和数组的监听&#xff1f; 102、Proxy 与 Object.d…

运营商DNS vs 公共DNS,IT运维的你选对了吗?

在IT运维中&#xff0c;选择运营商DNS还是公共DNS是一个需要综合考虑多方面因素的决策。 一、运营商DNS 优点 1. 速度与可用性&#xff1a; • 运营商DNS服务器通常部署在本地或邻近地区&#xff0c;因此能够提供较低的延迟和更快的解析速度。 • 运营商通常会投入大量资源来…

Java利用itextpdf实现pdf文件生成

前言 最近公司让写一个数据页面生成pdf的功能&#xff0c;找了一些市面代码感觉都太麻烦&#xff0c;就自己综合性整合了一个便捷的工具类&#xff0c;开发只需简单组装数据直接调用即可快速生成pdf文件。望大家一起学习&#xff01;&#xff01;&#xff01; 代码获取方式&am…

java游戏网站源码

题目&#xff1a;java游戏网站源码 编号B22A390 主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Mysql|大数据|SSM|SpringBoot|Vue|Jsp|MYSQL等)、学习资料、JAVA源码、技术咨询 文末联系获取 感兴趣可以先收藏起来&#xff0c;以防走丢&#xff0c;有任何选题、文档编…