1. 程式人生 > >Spring Boot常用配置

Spring Boot常用配置

resource intellij runtime 默認 per context none splay 文件的

概述

    本文主要寫了下Spring Boot的一些常用配置。


Spring Boot基本配置

    入口類:

        Spring Boot通常有一個名為*Application的入口類,入口類裏面有一個main方法,這個main方法其實就是一個標準的Java應用的入口方法。在main方法中使用SpringApplication.run(*Application.class, args),啟動Spring Boot應用項目。

    @SpringBootApplication:

        @SpringBootApplication是Spring Boot的核心註解,它是一個組合註解,源碼如下:

技術分享圖片
 1 //
 2 // Source code recreated from a .class file by IntelliJ IDEA
 3 // (powered by Fernflower decompiler)
 4 //
 5 
 6 package org.springframework.boot.autoconfigure;
 7 
 8 import java.lang.annotation.Documented;
 9 import java.lang.annotation.ElementType;
10 import java.lang.annotation.Inherited;
11 import java.lang.annotation.Retention; 12 import java.lang.annotation.RetentionPolicy; 13 import java.lang.annotation.Target; 14 import org.springframework.context.annotation.ComponentScan; 15 import org.springframework.context.annotation.Configuration; 16 17 @Target({ElementType.TYPE}) 18
@Retention(RetentionPolicy.RUNTIME) 19 @Documented 20 @Inherited 21 @Configuration 22 @EnableAutoConfiguration 23 @ComponentScan 24 public @interface SpringBootApplication { 25 Class<?>[] exclude() default {}; 26 27 String[] excludeName() default {}; 28 }
SpringBootApplication源碼

        @SpringBootApplication註解主要組合了@Configuration、@EnableAutoConfiguration、@ComponentScan;若不使用@SpringBootApplication註解,則可以在入口類上直接使用@Configuration、@EnableAutoConfiguration、@ComponentScan。

        其中,@EnableAutoConfiguration讓Spring Boot根據類路徑中的jar包依賴為當前項目進行自動配置。例如,添加了spring-boot-starter-web依賴,會自動添加Tomcat和Spring MVC的依賴,那麽Spring Boot會對Tomcat和Spring MVC進行自動配置。

        Spring Boot會自動掃描@SpringBootApplication所在類的同級包以及下級包裏的Bean。建議入口類放置的位置在groupId+arctifactID組合的包名下。

    關閉特定的自動配置:

        通過上面的@SpringBootApplication的源碼可以看出,關閉特定的自動配置應該使用@SpringBootApplication註解的exclude參數,例如:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})。

    Banner:

        Banner是Spring Boot啟動時候顯示的一個啟動圖案,我們可以修改或關閉它。

        修改Banner:

            在scr/main/resources下新建一個banner.txt即可,裏面寫上你想要的圖案。

        關閉Banner:

技術分享圖片
1 //關閉Banner有兩種方式,都是修改main裏面的內容。
2         //1:
3         new SpringApplicationBuilder(Ch623Application.class).showBanner(false).run(args);
4         //2:
5         SpringApplication springApplication = new SpringApplication(Ch623Application.class);
6         springApplication.setShowBanner(false);
7         springApplication.run(args);
關閉Banner

    Spring Boot的配置文件:

        Spring Boot使用一個全局的配置文件application.properties或application.yml,放置在src/main/resources目錄或者類路徑的/config下。

        Spring Boot不僅支持常規的properties配置文件,還支持yaml語言的配置文件。yaml是以數據為中心的語言,在配置數據的時候具有面向對象的特征。

        Spring Boot的全局配置文件的作用是對一些默認配置的配置值進行修改。

        例:修改Tomcat的默認端口號,並將默認的訪問路徑“/”修改為“/helloboot”,就可以在配置文件中加上下面的代碼。

            server.port=9090

            server.CONTEXT_PATH=/helloboot

    starter pom:

        Spring Boot為我們提供了簡化企業級開發絕大多數場景的starter pom,只要使用了應用場景所需要的starter pom,相關的技術配置將會消除,就可以得到Spring Boot為我們提供的自動配置的Bean。

        可以去Spring Boot官網找到其提供了哪些starter pom。

    使用xml配置:

        Spring Boot提倡零配置,即無xml配置,但是在實際項目中,可能有一些特殊要求你必須使用xml配置,這時我們可以通過Spring提供的@ImportResource來加載xml配置。

        例:@ImportResource({"classpath:som-context.xml","classpath:another-context.xml"})

Spring Boot外部配置

    Spring Boot除了上面的配置外,還允許使用properties文件、yaml文件或者命令行參數作為外部配置。

    命令行參數配置:

        Spring Boot可以是基於jar包運行的,打成jar包的程序可以直接通過命令運行:java -jar xx.jar。

        可以通過命令修改Tomcat端口號:java -jar xx.jar --server.port=9090。

    常規屬性配置:

        在Spring中,可以通過註入properties文件裏的值的方式,並使用@PropertySource指明properties文件的位置,然後通過@Value註解註入值。

        在Spring Boot裏,我們只需要在application.properties定義屬性,直接使用@Value註入即可。

        例如:

1 //application.properties中寫下如下代碼
2     //book.author=gaof
3     //book.name=spring boot
4     //然後註入。
5     @Value("${book.author}")
6     private String bookAuthor;
7     @Value("${book.name}")
8     private String bookName;

    類型安全的配置(基於properties):

        上面使用@Value註入每個配置在實際項目中會顯得格外麻煩,因為我們的配置通常會是許多個,若使用上面的方式則要使用@Value註入很多次。

        Spring Boot還提供了基於類型安全的配置方式,通過@ConfigurationProperties將properties屬性和一個Bean及其屬性關聯,從而實現類型安全的配置。

        例如:

 1 package com.wisely.ch6_2_3.config;
 2 
 3 import org.springframework.boot.context.properties.ConfigurationProperties;
 4 import org.springframework.stereotype.Component;
 5 
 6 /**
 7  * 在application.properties中寫下如下代碼
 8  *      author.name=gaof
 9  *      author.age=32
10  * 然後使用@ConfigurationProperties註解的prefix指定properties裏面配置的 前綴。
11  * 
12  * 若需指定其他的配置文件,則需添加屬性locations。
13  */
14 @Component
15 @ConfigurationProperties(prefix = "author")
16 //@ConfigurationProperties(prefix = "author", locations = {"classpath:config/author.properties"})
17 public class AuthorSettings {
18     private String name;
19     private Long age;
20 
21     public String getName() {
22         return name;
23     }
24 
25     public void setName(String name) {
26         this.name = name;
27     }
28 
29     public Long getAge() {
30         return age;
31     }
32 
33     public void setAge(Long age) {
34         this.age = age;
35     }
36 }

日誌配置

    Spring Boot支持Java Util Logging、Log4J、Log4J2和Logback作為日誌框架,無論使用哪種日誌框架,Spring Boot都已為當前使用日誌框架的控制臺輸出及文件輸出做好了配置。

    默認情況下,Spring Boot使用Logback作為日誌框架。

    配置日誌級別:logging.level.org.springframework.web = DEBUG;格式:logging.level.包名=級別。

    配置日誌文件:logging.file=D:/mylog/log.log。

Profile配置

    Profile是Spring用來針對不同的環境對不同的配置提供支持的,全局Profile配置使用application-{profile}.properties。

    通過在application.properties中設置spring.profiles.active=prod來指定活動的Profile。

    例如:

        技術分享圖片

        技術分享圖片

Spring Boot常用配置