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
簡單的入門,就介紹到這。