天天看點

Spring Boot 開發入門(二)

作者:追夢Java

本文介紹的内容包括:Spring Boot 的 pom檔案、應用入口類、開發測試熱啟動,以及 Spring Boot 的配置檔案。

1、pom 檔案及應用入口類

1、pom 檔案介紹

具體介紹可參見以下的代碼注釋:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <!-- pom模型版本 -->
  <modelVersion>4.0.0</modelVersion>
  <!-- 配置 Spring Boot 的父級依賴,用來提供相關的 Maven 預設依賴,使用它可以省去常用的包依賴就 version 标簽。-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.2</version>
    <relativePath /> <!-- lookup parent from repository -->
  </parent>
  <!-- <groupId>,<artifactId>與<version>辨別了倉庫中的一個特定位置,叫項目坐标 -->
  <!-- groupId是項目組織唯一的辨別符,實際對應java的包的結構 -->
  <groupId>com.jpm</groupId>
  <!-- ArtifactID就是項目的唯一的辨別符,實際對應項目的名稱,就是項目根目錄的名稱 -->
  <artifactId>springbootdemo</artifactId>
  <!-- 版本 -->
  <version>0.0.1-SNAPSHOT</version>
  <!-- 打包方式 (war,jar) -->
  <packaging>war</packaging>
  <!-- 項目的名稱,Maven産生的文檔用 -->
  <name>springbootdemo</name>
  <!-- 項目的描述,Maven産生的文檔用 -->
  <description>Demo project for Spring Boot</description>
  <properties>
    <!-- jdK版本 -->
    <java.version>1.8</java.version>
  </properties>
  <dependencies>
    <dependency>
      <!-- 加載web子產品 -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 加載tomcat子產品 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <!-- 加載測試子產品 -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>


  <build>
    <plugins>
      <plugin>
        <!-- 将Spring Boot應用打包為可執行的jar或war檔案,然後以通常的方式運作Spring Boot應用。-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>


</project>           

2、應用入口類

Spring Boot 項目通常有一個名為 xxxApplication 的入口類,入口類裡有一個 main 方法, 這個 main 方法其實就是一個标準的 Java 應用的入口方法。

package com.jpm.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootdemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(SpringbootdemoApplication.class, args);
  }


}           

@SpringBootApplication 是 Spring Boot 的核心注解,它是一個組合注解,該注解組合了:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan,@SpringBootApplication 注解也可以使用這三個注解代替。

Spring Boot 會自動掃描 @SpringBootApplication 所在類的同級包以及下級包裡的 Bean ,是以入口類建議就定義在 grounpID + arctifactID 組合的包下(例如:com.jpm.springboot 包)。

@SpringBootConfiguration 與 @Configuration 注解的功能一緻,标注這個類是一個配置類,隻不過@SpringBootConfiguration 是 Spring Boot 的注解,而@Configuration 是 Spring 的注解。@Configuration 注解替代以前的 applicationContext.xml 檔案,完成 spring 容器的初始化。

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

@ComponentScan 主要是指定掃描路徑,用于類或接口上,spring 會把指定路徑下帶有指定注解的類自動裝配到bean容器裡。會被自動裝配的注解包括@Controller、@Service、@Component、@Repository 等。其作用相當于<context:component-scan base-package="com.jpm.springboot" /> 配置。

2、Spring Boot 熱啟動

每次寫完代碼,想要代碼生效,總是要重新啟項目,這樣很費時間,熱啟動在項目開發中已經很常見了,而 Spring Boot 對開發調試也有很好的支援,修改代碼之後可以實時生效,隻需在 pom.xml 裡配置以下的代碼:

<!-- springBoot 熱啟動,代碼修改之後可以實時生效,不用重新開機 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>           

3、Spring Boot 的配置檔案

Spring Boot 提供了兩種常用的配置檔案,分别是 properties 檔案和 yml 檔案。他們的作用都是修改 Spring Boot 自動配置的預設值。

1、properties 檔案

Spring Boot 配置檔案的目錄:src/main/resources/application.properties

properties 檔案的文法結構:key=value

## 配置應用的上下文路徑,也就是項目路徑,是構成url位址的一部分ˆ†
server.servlet.context-path=/springbootdemo


## 配置端口
server.port=8888           

以上的配置表示項目路徑為 /springbootdemo,tomcat 的端口為 8888。

Spring Boot 開發入門(二)

運作程式

輸入 http://localhost:8888/springbootdemo/hello,才能正常通路。

2、yml 檔案

yml 是YAML(YAML Ain't Markup Language)語言的檔案,以資料為中心,在配置資料的時候具有面向對象的特征,更适合做配置檔案,yml 檔案以空格的縮程序度來控制層級關系。空格的個數并不重要,隻要左邊空格對齊則視為同一個層級。注意不能用 tab 代替空格,且大小寫敏感。

Spring Boot 配置檔案的目錄:src/main/resources/application.yml

server:
  port: 8889
  servlet:
    context-path: /springbootdemo-yml           

yml 檔案需要在 “:” 後面加一個空格。

以上的配置表示項目路徑為 /springbootdemo-yml,tomcat 的端口為 8889。

Spring Boot 開發入門(二)

運作程式

輸入 http://localhost:8889/springbootdemo-yml/hello,才能正常通路。

下一篇《Spring Boot 開發入門(三)》将為大家進一步介紹 Spring Boot 的入門知識。