1. 程式人生 > >快速構建 spring-boot 專案

快速構建 spring-boot 專案

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId
>
com.zjw</groupId> <artifactId>spring-boot-study</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.16.RELEASE</
version
>
</parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId
>
<artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies> </project>

2. 引入配置檔案

2.1 引入application.yml

spring:
  application:
    name: spring-boot-study
server:
  port: 10000

2.2 引入logback.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <!--定義日誌檔案的儲存地址 勿在 LogBack 的配置中使用相對路徑-->
  <property name="LOG_HOME" value="./log"/>
  <!-- 日誌字首名稱 -->
  <property name="LOG_NAME" value="spring-boot-study"/>
  <!-- 控制檯輸出 -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <!--格式化輸出:
      %d表示日期,
      %thread表示執行緒名,
      %-5level:級別從左顯示5個字元寬度,
      %logger{50}輸出日誌的類 50代表包名加類名的總長度限制,
      %msg:日誌訊息,%n是換行符-->
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
  </appender>
  <!-- 按照每天生成日誌檔案 -->
  <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!--日誌檔案輸出的檔名-->
      <FileNamePattern>${LOG_HOME}/${LOG_NAME}-%d{yyyy-MM-dd}.log
      </FileNamePattern>
      <!--日誌檔案保留天數-->
      <MaxHistory>30</MaxHistory>
    </rollingPolicy>
    <encoder
      class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <!--格式化輸出:
      %d表示日期,
      %thread表示執行緒名,
      %-5level:級別從左顯示5個字元寬度,
      %logger{50}輸出日誌的類 50代表包名加類名的總長度限制,
      %msg:日誌訊息,%n是換行符-->
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
    <!--日誌檔案最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
  </appender>
  <!--庫日誌輸出級別 -->
  <root level="INFO">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="ROLLING_FILE"/>
  </root>
</configuration>

3 編寫啟動類和Controller類

3.1 啟動類

package com.zjw;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {

  private static final Logger logger = LoggerFactory.getLogger(MyApplication.class);
  
  public static void main(String[] args) {
    SpringApplication.run(MyApplication.class, args);
    logger.info("Spring Application Running...");
  }
}

3.2 Controller類

package com.zjw.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
  private static final Logger logger = LoggerFactory.getLogger(HelloController.class);

  @RequestMapping("/hello")
  public String hello() {
    logger.info("HelloController hello function invoked.");
    return "Hello, I'm Spring boot Application.";
  }
}

4 編寫測試類

package com.zjw.test;

import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;

import java.net.MalformedURLException;
import java.net.URL;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.embedded.LocalServerPort;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class HelloControllerTest {
  private static final Logger logger = LoggerFactory.getLogger(HelloControllerTest.class);

  @LocalServerPort
  private int port;
  private URL base;
  @Autowired
  private TestRestTemplate template;

  @Before
  public void before() throws MalformedURLException {
    this.base = new URL("http://localhost:" + port + "/hello");
  }

  @Test
  public void testHello() {
    ResponseEntity<String> response = template.getForEntity(base.toString(), String.class);
    logger.info(response.getBody());
    assertThat(response.getBody(), equalTo("Hello, I'm Spring boot Application."));
  }
}

附專案結果截圖

在這裡插入圖片描述