2、SpringBoot基礎配置

[toc]java

2.1 @SpringBootApplication

上篇文章中知道@SpringBootApplication是加載啓動類上的一個組合註解,源碼定義:web

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
	//other code...
}

能夠看到這個註解包含了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan三個經常使用的註解,他們的做用以下:spring

  • @SpringBootConfiguration 其實質就是一個@Configuration,表示被註解的類是一個配置類,developer能夠在該類中配置Bean
  • EnableAutoConfiguration 表示開啓自動化配置
  • @ComponentScan 對包進行掃描(註解@Service@Repository@Component@Controller@RestController@Configuration等),默認掃描的類都位於當前類所在包的以及子包,所以一般將啓動類放在項目根包中

2.2 SpringBoot配置文件

2.2.1 Properties配置

SpringBoot完成了大量的自動化配置,可是開發過程當中,不免須要咱們本身定義配置一些信息,好比數據庫的配置,所以SpringBoot提供了properties配置,SpringBoot會默認讀取application.properties中的配置信息。 SpringBoot項目中的application.properties的存放位置以及優先級關係:數據庫

  • 一、項目根目錄的config目錄下
  • 二、項目根目錄下
  • 三、classpath:/config目錄下
  • 四、classpath下

application.properties的配置信息以鍵值對(key = value)的形式編寫:tomcat

server.port=8080
user.name=gongSir
user.major=computer
user.grade=2017
server.error.path=/error

加粗樣式

2.2.2 YAML配置

YAML是JSON的超集,是一種專門用來寫配置文件的語言,簡介而強大,能夠用來替代application.properties。YAML簡單易上手,用縮進表示層級關係,區分大小寫。 如今改寫上文的properties,將文件後綴改爲yml,即application.yml:服務器

server:
  port: 8080
  error: /error

user:
  name: gongSir
  major: computer
  grade: 2017

2.2.3 讀取配置文件中的自定義信息

不管是properties仍是yaml配置都會被SpringBoot加載到environment中。spring提供了@Value註解以及EnvironmentAware接口將Spring Environment中的數據注入到bean屬性上,demo以下: 首先在pom中引入依賴:session

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

如今來讀取上文的user信息,寫一個bean:app

@Component
//user是前綴
@ConfigurationProperties(prefix = "user")
public class User {
    private String name;
    private String major;
    private String grade;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public String getGrade() {
        return grade;
    }

    public void setGrade(String grade) {
        this.grade = grade;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", major='" + major + '\'' +
                ", grade='" + grade + '\'' +
                '}';
    }
}

添加一個/user接口:ide

@RestController
public class HelloController {
    @GetMapping(path = "/hello")
    public String hello(){
        return "hello spring boot!";
    }

    @Autowired
    User user;
    @GetMapping(path = "/user")
    public String user(){
        System.out.println(user);
        return user.toString();
    }
}

使用@Autowired註解注入註冊的bean信息,而後接口輸出信息: 在這裏插入圖片描述 使用@Value註解,修改上述代碼:spring-boot

@RestController
public class HelloController {
    @GetMapping(path = "/hello")
    public String hello(){
        return "hello spring boot!";
    }

    @Value("${user.name}")
    String myName;

    @Autowired
    User user;
    @GetMapping(path = "/user")
    public String user(){
        System.out.println("myName: "+myName);
        System.out.println(user);
        return user.toString();
    }
}

控制檯: 在這裏插入圖片描述

2.2.4 profile切換運行環境

在生產開發過程當中,項目上線以前,常常須要切換運行環境,即在開發環境、測試環境、預發佈、發佈環境以前切換,而這些不一樣的環境每每有不一樣的配置文件信息,每次都去修改application.properties不免複雜繁瑣,SpringBoot提供了很好的解決方案,SpringBoot中約定了不一樣環境下配置文件的名稱規則爲application-{profile}.properties(YAML同理),profile表示當前環境的名稱,具體配置: 一、建立配置文件 假設如今有test和dev兩個環境,咱們在resource下分別建立==application-test.properties==、==application-dev.properties==,分別表示測試環境和開發環境的配置,簡單配置: ==application-dev.properties==:

server.port=8080

==application-test.properties==:

server.port=8081

二、修改application.properties 接下來咱們在==application.properties==中配置環境名稱便可:

spring.profiles.active=dev

演示test環境啓動: 在這裏插入圖片描述 在這裏插入圖片描述 演示dev環境啓動: 在這裏插入圖片描述 在這裏插入圖片描述

2.3 服務器配置

2.3.1 Tomcat配置

SpringBoot內置了默認的tomcat服務器,所以不須要特別配置,如需修改tomcat端口等信息,可在上文中的application.properties文件中配置:

#端口號
server.port=8081
#錯誤頁面
server.error.path=/error
#session失效時間
server.servlet.session.timeout=30m
#Tomcat的請求編碼
server.tomcat.uri-encoding=utf-8

更多配置參考官方文檔!

2.3.2 Jetty配置

除了Tomcat,SpringBoot也支持嵌入Jetty,配置以下:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 取出Tomcat默認項 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 嵌入Jetty服務器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>

由於SpringBoot默認在web中內嵌了Tomcat,所以須要從web中去除tomcat,而後加入Jetty依賴便可。 啓動項目: 在這裏插入圖片描述

2.4 修改啓動banner

SpringBoot項目啓動時會在後臺打印一個banner,以下圖: 在這裏插入圖片描述 咱們也能夠本身定製想要的啓動頁: 在resource目錄下新建一個==banner.txt==文件,把想打印的字符保存在這個TXT裏面,SpringBoot啓動時,就會打印出來: 在這裏插入圖片描述 也能夠定製藝術字體,直接去這裏定製,而後複製到banner中便可! 在這裏插入圖片描述 在這裏插入圖片描述

小結

本文主要介紹SpringBoot的基礎配置,包括啓動註解、配置文件、服務器配置等。待續......

相關文章
相關標籤/搜索