spring boot (一)入門 啓動、日誌配置和快速構建

spring boot 入門

什麼是spring boot

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。用我的話來理解,就是spring boot其實不是什麼新的框架,它默認配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道這樣比喻是否合適)。

使用spring boot有什麼好處

其實就是簡單、快速、方便!平時如果我們需要搭建一個spring web項目的時候需要怎麼做呢?

1)配置web.xml,加載spring和spring mvc

2)配置數據庫連接、配置spring事務

3)配置加載配置文件的讀取,開啓註解

4)配置日誌文件

...

配置完成之後部署tomcat 調試

現在非常流行微服務,如果我這個項目僅僅只是實現一個小功能,比如定期清理了一些過期失效的文件,或者做一個向外提供數據的webService服務,難道所有的步驟每次都需要這樣重複折騰一遍!當然不,能簡單爲什麼要複雜呢?

但是如果使用spring boot呢?

很簡單,我僅僅只需要非常少的幾個配置就可以迅速方便的搭建起來一套web項目或者是構建一個微服務!

         下面進入正題,我們要從一個入門實例,就是helloword,來實際感受一下

         開發工具是eclipse,下圖是一個標準的springboot默認項目目錄結構,採用默認配置可以省去很多配置,當然也可以根據自己的喜歡來進行更改,這裏就採用spring boot的默認目錄結構,還是那句話能簡單爲什麼要複雜呢?

        

第一,先把完整的pm.xml文件貼出來,如下:

<?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.example</groupId>

   <artifactId>demo</artifactId>

   <version>0.0.1-SNAPSHOT</version>

   <packaging>jar</packaging>

   <name>demo</name>

   <description>Demo project forSpring Boot</description>

   <parent>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <version>1.5.6.RELEASE</version>

      <relativePath /> <!-- lookup parentfrom repository -->

   </parent>

   <properties>

      <start-class>com.example.demo.DemoApplication</start-class>

      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

      <java.version>1.8</java.version>

   </properties>

   <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>

        <scope>test</scope>

      </dependency>

 

   </dependencies>

 

   <build>

      <plugins>

        <plugin>

           <groupId>org.springframework.boot</groupId>

           <artifactId>spring-boot-maven-plugin</artifactId>

        </plugin>

      </plugins>

   </build>

 

 

</project>

第二,項目的啓動類要注意,最好放在根包下面,其它的類或包也相應在根包下面,然後

在啓動類加一個註解@SpringBootApplication,就可以了。這一個註解相當於

@Configuration,@EnableAutoConfiguration,@ComponentScan三個註解,前提是你的啓動類要放在根包下。

@SpringBootApplication

public class DemoApplication {

 

   public static void main(String[] args) {

      SpringApplication.run(DemoApplication.class, args);

   }

}

三、在根包上建一個controller,@restcontroller爲@controller和@responsebody的結合,可以直接以字符串返回:

package com.gaox.demo.controller;

 

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RestController;

 

@RestController

public class TestController {

 

   @RequestMapping("/hello")

   publicString hello(){

      return"hello world !";

   }

}

四、這時run as 根包上的啓動類就可以了。如圖


spring boot 默認的端口是8080,默認的項目路徑爲空,所以輸入http://localhost:8080/hello就可以請求到相應的controller了


另外,端口和項目的根路徑可以在application.properties中配置

server.port=8081

server.context-path=/demo


spring boot 還有默認的日誌記錄,可以在application.properies中配置使用,默認日誌文件超過10M會重新建一個文件繼續記錄,另外可以對日誌的輸出級別、輸出樣式進行簡單的調整,基本可以滿足需要了,如果不能滿足實際需要,可以參考考慮單獨日誌配置輸出

logging.file=d:/logs/demo.log

#debug=true

#logging.level.com.sundyn.task=info

#logging.level.com.sundyn.controller=info

#logging.pattern.file=%d{yyyy/MM/ddHH:mm:ss} [%thread] %-5level %logger- %msg%n

 

當然屬性文件裏還可以配置很多東西,比如配置一 下面的參數

gaox= I am gaox !,可以在項目中能過@value("${gaox}")取到。

package com.gaox.demo.controller;

 

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

 

@RestController

public class TestController {

  

   @Value("${gaox}")

   private String gaox;

   private Logger log=Logger.getLogger(TestController.class);

   @RequestMapping("/hello")

   public String hello(){

      return "hello world! 我設置了新的訪問端口和項目根路徑";

   }

  

   @RequestMapping("/gaox")

   public String gaox(){

      log.info(gaox);

      return gaox;

   }

}

在配置的日誌中也看到了記錄

2017-10-24 14:27:48.708  INFO 5700 --- [http-nio-8081-exec-1]com.gaox.demo.controller.TestController : I am gaox !

最好不要在屬性文件中配置中文參數,因爲會亂碼,原因還沒有找到。

有時候從debug as啓動的時候會報異常,但是不會影響項目的運行,本人有極強的強迫症,項目沒有錯,居然報異常,無法容忍,所以在eclipse裏設置一下就可以了preferences>java>debug 如下圖紅槓去掉勾選就沒事了



五、如何快速構建一個spring boot項目?

   個人總結有四種方法:

第一、最快,零成本。spring boot的官網 http://start.spring.io如下,構建完項目,下載後再導入到自己的開發工具裏


第二種,spring boot 官網 https://spring.io/tools/sts/all下載Spring ToolSuite,解壓後雙擊sts-bundle\sts-3.6.4.RELEASE 下sts.exe啓動,剩下的操作和eclipse一樣,右鍵new spring starter project,然後下一步,直到完成就可以了,這種方法的另一個好處是配置application.properties是有提示

 

第三種,就是在eclipse中安裝關於spring boot的相關插件,也可以實現如第二種方法的效果,只不過是好像spring tool suite插件對應eclipse有版本限制,試了好幾種沒有找到合適的插件,不過這也是一種方法。

第四種,那就在eclipse裏建一個普通maven java項目然後,配置好pom.xml 、application.properties,形成spring boot默認的目錄結構也行。

 

我比較喜歡用sts,方便,用着和eclipse一樣,感覺就是一個裝了spring tool suite的eclipse,只不過名字叫STS.EXE

 

簡單的入門,就介紹到這。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章