1. 程式人生 > >Spring Boot 實踐折騰記(四):配置即使用,常用配置

Spring Boot 實踐折騰記(四):配置即使用,常用配置

生活不可能像你想象的那麼好,但也不會像你想象的那麼糟。我覺得人的脆弱和堅強都超乎自己的想象。有時,可能脆弱得一句話就淚流滿面;有時,也發現自己咬著牙走了很長的路。——源自 莫泊桑

開始前…

本章內容主要介紹的是Spring Boot常用的配置,相對前一篇來說,比較簡單。“配置即使用“的意思就是,在工程裡配置了自帶的預設配置或自定義配置後,就能生效的一種功能,這也是Spring Boot推薦的一種做法。常用配置,就是一般用得最多的配置,大家預設推薦的配置。其實大家都知道官方有最標準的配置,但是有時就是不願去看,反而喜歡常用配置,為什麼呢?一般的技術文件都是枯燥乏味的,寫的井然有序,適合查詢,但是一般的情況下,有些配置很少會用到,所以,就逐漸形成了常用配置。

說說@SpringBootApplication

@SpringBootApplication是Spring Boot的核心註解,它本身是一個的註解組合,包含了啟動配置的一系列功能,讓我們來看下原始碼:

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import
java.lang.annotation.Target; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.AliasFor; @Target({ElementType.TYPE}) @Retention
(RetentionPolicy.RUNTIME) @Documented @Inherited @Configuration @EnableAutoConfiguration @ComponentScan public @interface SpringBootApplication { Class<?>[] exclude() default {}; String[] excludeName() default {}; @AliasFor( annotation = ComponentScan.class, attribute = "basePackages" ) String[] scanBasePackages() default {}; @AliasFor( annotation = ComponentScan.class, attribute = "basePackageClasses" ) Class<?>[] scanBasePackageClasses() default {}; }

組合包含了以下重要註解:

@Configuration
@EnableAutoConfiguration
@ComponentScan

其中,@Configuration表示這是一個配置,@EnableAutoConfiguration表示讓Spring Boot根據類路徑中的jar包依賴為當前專案進行自動配置。

比如,添加了spring-boot-starter-web這個基礎依賴,Spring Boot會自動新增tomcat和Spring MVC的依賴,並且自動對他們進行配置。

@ComponentScan表示的是大家都熟悉的自動bean掃描注入。

如果不使用@SpringBootApplication,可以像我第一章那樣,使用單獨的註解,效果是一樣的。

再來說一下入口類,Spring Boot的啟動是靠一個名為*Application的入口類來實現的,入口類其實就是一個標準的Java靜態方法類,只不過是在類中使用了一個物件SpringApplication的run方法來啟動Spring Boot專案。如下圖:

這裡寫圖片描述

由於Spring Boot會自動掃描@SpringBootApplication所在類的同級包(如com.hjf.boot.demo.boot_mybatis)以及下級包裡的所有bean,所以,官方建議入口類放在最外層的包名下。如下圖:

這裡寫圖片描述

最後,還有一個新的註解@AliasFor,這個註解應該是從4.2開始的標示註解屬性別名的含義。

屬性檔案配置

Spring Boot的預設屬性配置檔案是在resources下的application.properties,也可以使用application.yaml來配置預設引數。如果是使用Spring Boot自帶的配置的話,配置即使用,無需再單獨去宣告內容。例如:

這裡寫圖片描述

也可以使用自己習慣的配置,但是這種方式不太安全,有可能會和自帶的配置或第三方配置衝突,例如:

test.user=mickjoust
test.age=30

Spring Boot推薦使用型別安全的方式來進行自定義配置,例如:

@ConfigurationProperties(
        prefix = "safe"   //定義了一個safe字首的配置類
)
public class SafeProperties {
}

日誌配置

Spring Boot支援 Java Utile Logging、Log4J、Log4J2和Logback作為日誌框架,無論使用哪種框架,Spring Boot都為當前使用日誌框架及檔案輸出做好了配置。

預設情況下,Spring Boot使用LogBack作為預設日誌框架,輸出格式的檔案是logback.cml

配置日誌級別:

logging.file=/export/log

配置日誌檔案,按照格式loggin.level.包名=級別:

logging.level.org.springframework.web=DEBUG

或者直接配置root所有日誌級別:

logging.level.root=DEBUG

Profile配置

Profile是Spring針對不同的環境提供不同的配置支援的一種功能,一般應用在生產環境和測試環境的配置區分上(比如,測試環境一般需要列印更多日誌資訊或者http響應中會有很多測試標示資訊等等,生產環境則不會有)。Spring Boot中通過類似格式applicaiotn-{profile_name}.properties的配置形式指定當前活動的Profile。
例如:首先在application.properties中配置如下:

spring.profiles.active=dev

新建application-dev.properties和application-online.properties兩個配置檔案,內容分別如下:
application-dev.properties

server.port=8181

application-online.properties

server.port=9090

檔案結構如下:
這裡寫圖片描述
啟動不同配置即可看到用的是測試環境配置,如下,切換配置同理。
使用測試環境配置

這裡寫圖片描述

使用生產環境配置

這裡寫圖片描述

引用xml配置

上一章裡已經使用過,使用@ImportResource來載入xml配置,使我們在特定的應用的場景下去使用xml的配置:

@ImportResource(locations = "classpath*:/applicationContext.xml")

關閉自動配置

同樣,上一章中已經配置過,當我們需要關閉自動配置的功能是,找到對應的自動配置的類,新增到排除項裡即可,多項採用逗號隔開.class名稱:

@SpringBootApplication(exclude = {MybatisAutoConfiguration.class})

Banner配置

關閉banner

Banner是什麼?其實就是啟東時顯示的一個圖案,Spring Boot預設顯示如下:

如果不想顯示它,直接在配置檔案裡配置即可關閉,如下:

spring.main.banner-mode=off

修改banner

我們也可以定製自己的啟動圖案,通過字元生成網站生成好看的字母或圖案字元來顯示自己的啟動圖案。

1、在src/main/resources下新建一個banner.txt。
2、將生成好的字元複製到banner.txt中。
3、啟動即可顯示自定義圖案了。

這裡寫圖片描述

starter pom

Spring Boot為我們提供了大多數常用的封裝依賴,叫做starter pom,只要使用相關的starter pom,則Spring Boot會為我們自動的配置Bean,使用配置檔案即可修改常用引數。除了官方提供的starter pom以外,頁可以自己封裝starter應用於自己的專案,後面再抽空演示如何自定義starter pom,像上一章裡的mybatis就是mybatis小組封裝的starter提供對Spring Boot的支援。

官方地址starter pom地址:

Favicon配置

關閉Favicon

說到favicon.ico這個小圖示,Spring Boot提供了預設的小葉子,如果不需要使用

定製Favicon

但是,絕大多數時候,我們都會定製自己的小圖示,用以區分我們的專案。設定它很簡單,只需要將favicon.ico檔案放到以下目錄下,即可實現。

1、類路徑 根目錄 下
2、類路徑 META-INF/resources/下
3、類路徑 resources/下
4、類路徑 static/下
5、類路徑 public/下

後續文章在整合web專案詳細配置時,會單獨說明除了Spring Boot預設識別的靜態檔案路徑外,怎麼自定義靜態路徑或其它過濾路徑。

一份簡單的配置

#自定義:型別不安全
demo.author=mickjoust
demo.name=mickjoust-boot-demo

#內嵌tomcat配置
server.port=8080
#server.context-path= //如果沒有值就不配置,可以使用預設,但不要在這裡留空,會有錯誤
server.tomcat.uri-encoding=UTF-8

#Profile
spring.profiles.active=dev

#http encoding
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

#日誌
#logging.file=/export/log
#logging.level.root=DEBUG
#logging.level.org.springframework.web=DEBUG
#logging.level.sample.mybatis.mapper=TRACE

#datasource
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
#spring.datasource.username=test
#spring.datasource.password=123456
#spring.datasource.max-active=10
#spring.datasource.max-idle=5
#spring.datasource.min-idle=0

#converters 預設jackson
spring.http.converters.preferred-json-mapper=gson

#spring.main.banner-mode=off

小結

本章主要是對常用的Spring Boot配置做了簡單的說明,更詳細的配置可以參考官方的解釋。配置內容和整合使用的依賴有關係,比如,ssl,jpa,jackson,httpconvert,mvc等等,具體使用時再說明。

page 165 of 366 in chapter 2016

相關推薦

Spring Boot 實踐折騰配置使用常用配置

生活不可能像你想象的那麼好,但也不會像你想象的那麼糟。我覺得人的脆弱和堅強都超乎自己的想象。有時,可能脆弱得一句話就淚流滿面;有時,也發現自己咬著牙走了很長的路。——源自 莫泊桑 開始前… 本章內容主要介紹的是Spring Boot常用的配置,相對前

Spring Boot 實踐折騰快速Hello World例子

規劃人生旅程是你自己責無旁貸的責任,沒有其他人可以替你規劃。即便是你的老闆,也沒有這個義務。要實現自我發展,必須同時做好兩件事:精益求精和嘗試新鮮。——《非營利性組織的管理》 開始前… 最近閒下來,看了些Spring Boot和Docker的相關資料

Spring Boot 實踐折騰17Spring WebFlux中的函數語言程式設計模型

楊絳先生說:大部分人的問題是,做得不多而想得太多。 今天要講的函數語言程式設計可能和Spring Boot本身的關係不太大,但是它很重要!不僅是因為從Java 7升級到Java 8多了一種新程式設計語法的支援,更因為這是一種不同的思維模式。同時,今天的內容可能

Spring Boot 實踐折騰三板斧Spring Boot下使用Mybatis

你要搞清楚自己人生的劇本:不是你父母的續集,不是你子女的前傳,更不是你朋友的外篇。對待生命你不妨大膽冒險一點,因為好歹你要失去它。——源自尼采 開始前… 上面的金句是被轉載很多的一句話,Spring Boot也有自己的舞臺,只是這個舞臺還沒有大量展開

Spring Boot 實踐折騰14使用Kotlin

博爾赫斯說,沒有比思考更復雜的思考了,因此我們樂此不疲。 從Spring Boot 2開始,Boot也開始正式支援Kotlin程式設計,我們可以在建立Spring Boot應用時程式時使用Spring初始化Kotlin,不過Kotlin要在新的Spring 5

Spring Boot 實踐折騰11使用 Spring 5的WebFlux快速構建效響應式REST API

關於Spring 5中的反應式程式設計支援Reactor類庫,上一篇文章《 Spring Boot 實踐折騰記(10):2.0+版本中的反應式程式設計支援——Reactor》已經簡要介紹過,Spring 5 框架所包含的內容很多,本文還會繼續介紹其中新增的 W

Spring Boot 初級入門教程 —— 程式碼測試配置附原始碼

在專案開發中,測試環節是非常重要的,所以選擇好的程式碼測試工具也顯得尤為重要。 首先,基於前三篇的程式碼,先修改一些 Jar 包的版本,都用目前最新版本(強迫症!!!)。 junit 版本修改:3.8.1 -》 4.12 spring boot 版本修改:1.4.2.R

【Win 10 應用開發】UI Composition 劄繪制圖形

圖形 package 記得 aml 3.5 平時 surf 繪圖 str 使用 Win 2D 組件,就可以很輕松地繪制各種圖形,哪怕你沒有 D2D 相關基礎,也不必寫很復雜的 C++ 代碼。 先來說說如何獲取 Win 2D 組件。很簡單,創建 UWP 應用項目後,你打開&

Spring Cloud EurekaEureka 服務註冊中心配置說明

Eureka Client 配置項(eureka.client.*) org.springframework.cloud.netflix.eureka.EurekaClientConfigBean

機器學習折騰1先成功執行一個Python例子

最近,聽很多朋友都在說人工智慧越來越火,想要了解其中究竟,於是我就推薦了幾本書,但結果卻是,除了工程師朋友能夠勉強看下去外,其餘大部分人到最後都不得放棄了,原因是太多數學公式,太難理解了。 比如,《深度學習》這本書,算得上一本科普書了,是專門寫給一般人看的,其

SpringBoot連線MySQLJPA操作

pom.xml: <dependencies> <dependency> <groupId>org.springfram

類加載spring-boot-loader 模塊

sys png out gpo 技術 jar getc spa 依賴 1. spring-boot jar包結構 2、 正常情況下,java -jar的類加載器是AppClassLoader 但是spring 使用自定義的URLClassLoader加載我們寫的cl

Spring Boot學習使用@SpringBootTest註解進行單元測試

一、簡介 專案中經常會遇到需要單元測試的情況,那麼SpringBoot如何實現這種需求,使用@SpringBootTest註解可以執行環境,測試後臺程式碼。 二、環境準備 eclipse + maven + Spring Boot 三、程式碼示例 pom.xml

Spring Boot快速入門使用jpa進行資料庫操作

新增依賴 新建專案選擇web,JPA,MySQL三個依賴 對於已存在的專案可以在bulid.gradle加入,spring boot將會幫你自動配置好 compile('org.springframework.boot:spring-boot-starter

重拾後端之Spring Boot使用JWT和Spring Security保護REST API

通常情況下,把API直接暴露出去是風險很大的,不說別的,直接被機器攻擊就喝一壺的。那麼一般來說,對API要劃分出一定的許可權級別,然後做一個使用者的鑑權,依據鑑權結果給予使用者開放對應的API。目前,比較主流的方案有幾種: 使用者名稱和密碼鑑權,使用Session儲存使用

Spring boot 入門集成 Shiro 實現登陸認證和權限管理

orm ger eal ehcache hash 業務邏輯 2個 時間 prot 本文是接著上篇博客寫的:Spring boot 入門(三):SpringBoot 集成結合 AdminLTE(Freemarker),利用 generate 自動生成代碼,利用 DataT

Spring Boot 2.x整合Mybatis的種方式

前言 目前的大環境下,使用Mybatis作為持久層框架還是佔了絕大多數的,下面我們來說一下使用Mybatis的幾種姿勢。 姿勢一:

Spring Boot Druid 連線池密碼加密與監控

在上一篇文章《Spring Boot (三): ORM 框架 JPA 與連線池 Hikari》 我們介紹了 JPA 與連線池 Hikari 的整合使用,在國內使用比較多的連線池還有一個是阿里開源的 Druid 。本篇文章我們就來聊一聊 Druid 的一些使用姿勢。 1. Druid 是什麼? 我們先來

Spring Boot系列Spring Boot原始碼解析

一、自動裝配原理   之前博文已經講過,@SpringBootApplication繼承了@EnableAutoConfiguration,該註解匯入了AutoConfigurationImport Selector,這個類主要是掃描spring-boot-autoconfigure下面的META-INF\

spring boot 監控與管理actuator

依賴 操作 上下 -1 star oms blog start 技術分享 Spring POMs 中提供了一個特殊的依賴模塊,即spring-boot-starter-actuator,我們只需要在我們的POM中添加依賴即可 <!-- 監控 管理 --> &l