1. 程式人生 > >一步步搭建 Spring Boot maven 框架的工程

一步步搭建 Spring Boot maven 框架的工程

摘要:讓Spring應用從配置到執行更加快速,演示DIY Spring Boot 框架時,如何配置埠號,如何新增日誌。

Spring Boot 框架幫助開發者更容易地建立基於Spring的應用程式和服務,使得開發者能夠快速地獲得所需要的Spring功能。 提供了非功能性的大型專案類特性,如(如內嵌伺服器、安全、度量、健康檢查、外部化配置),內部封裝了tomcat的一些核心jar包,將釋出封裝了,因此不需要將專案(war包)釋出到外部tomcat上。

搭建一個簡單的、基於Restfull 風格的Spring web mvc 專案,結構如下:

環境

eclipse:Oxygen Release (4.7.0);java version :"1.8.0_77";

maven:3.5.4;Servlet3容器(tomcat)

1.       配置maven的settings.xml

配置檔案中加入了阿里巴巴的映象。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 倉庫的地址-->
<localRepository>E:/MyLibs</localRepository>
<pluginGroups>

</pluginGroups>
<proxies>

</proxies>
<servers>

</servers>
<mirrors>
    <mirror>
        <id>alimaven-central</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://
maven.aliyun.com/nexus/content/repositories/central/</url> </mirror> <mirror> <id>jboss-public-repository-group</id> <mirrorOf>central</mirrorOf> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror> </mirrors> <profiles> </profiles> </settings>
2. Eclipse配置Maven

Maven配置如下圖所示,如果已經配置,可以忽略此步。

3. 建立maven專案

  new-->other-->maven-->Maven Project-->next-->finsh,maven專案就建好了。

 

 

 

 

 包名和專案名根據需求自定義。

4.       配置pom檔案
<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.0.RELEASE</version>
  </parent>
  <groupId>com.spring.boot</groupId>
  <artifactId>TestWebApp</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>TestWebApp</name>
  <url>http://maven.apache.org</url>
  <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
           <exclusion>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-logging</artifactId>
           </exclusion>
        </exclusions>
    </dependency>
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    
  </dependencies>
  <build>
    <plugins>
    <plugin>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
  </build>
</project>
5. 新增日誌

專案使用了log4j2列印日誌。首先,在src/main目錄下新增資料夾resources,然後,在resources下建立log4j2.xml。這個日誌配置比較簡單,有待優化。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
        </Console>
        <File name="log" fileName="log/webApp.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
        </File>
        <RollingFile name="RollingFile" fileName="log/webAppRoll.log" filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" />
            <SizeBasedTriggeringPolicy size="50MB" />
        </RollingFile>
    </appenders>
    <loggers>
        <root level="INFO">
            <appender-ref ref="RollingFile" />
            <appender-ref ref="Console" />
        </root>
    </loggers>
</configuration>
6.    設定埠號

在resources下建立application.properties。

 

 

1. 編寫測試程式碼

 javaBean定義如下,包括使用者ID和使用者名稱。

 

import java.io.Serializable;
public class User implements Serializable {
    private static final long serialVersionUID = 7797704227043955944L;
   
    private Long id;
    private String name;
    //    getter/setter omitted
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + "]";
    }
}

控制器程式碼: 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
    private static Logger logger = LoggerFactory.getLogger(UserController.class);
    /**
     * @Title view<br/>
     * @Description 示例地址 http://localhost:8080/user/100 <br/>
     * @param id
     * @return
     * @Author 樓蘭的胡楊<br/>
     * @Time 2018-08-26 11:47<br/>
     */
    @RequestMapping("/{id}")
    public User view(@PathVariable("id") Long id) {
        logger.info("接收的請求引數 begin --- id = {}", id);
        User user = new User();
        user.setId(id);
        user.setName("Spring Boot");
        return user;
    }
}

通過在UserController中加上@RequestMapping 配置請求路徑。通過在main方法中執行SpringApplication.run()來啟動專案: 

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {   
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

這時候專案就可以運行了,在Application 中run as-->java application 。控制檯列印結果:

 

截圖中紅色方框圈中的文字說明了系統啟動成功,而且,埠號是8080。此時在瀏覽器輸入http://localhost:8080/user/100  即可看到頁面效果:

 

控制檯列印結果:

 

參考文獻 https://www.cnblogs.com/qinbb/articles/5762081.html