Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。用個人話來理解,就是spring boot其實不是什麼新的框架,它默認配置了不少框架的使用方式,就像maven整合了全部的jar包,spring boot整合了全部的框架(不知道這樣比喻是否合適)。java
其實就是簡單、快速、方便!平時若是咱們須要搭建一個spring web項目的時候須要怎麼作呢?web
1)配置web.xml,加載spring和spring mvcspring
2)配置數據庫鏈接、配置spring事務數據庫
3)配置加載配置文件的讀取,開啓註解json
4)配置日誌文件瀏覽器
…tomcat
配置完成以後部署tomcat 調試springboot
…mvc
如今很是流行微服務,若是我這個項目僅僅只是須要發送一個郵件,若是個人項目僅僅是生產一個積分;我都須要這樣折騰一遍! app
可是若是使用spring boot呢?
很簡單,我僅僅只須要很是少的幾個配置就能夠迅速方便的搭建起來一套web項目或者是構建一個微服務!
訪問http://start.spring.io/,選擇構建的工具,SpringBoot版本以及一些工程信息,點擊「Switch to the full version.」java版本能夠選擇8,如圖所示
點擊Generate Project下載項目壓縮包。將工程導入eclipse便可。
導入後目錄結構如圖:
如上圖所示,Spring Boot的基礎結構共三個文件:
src/main/java 程序開發以及主程序入口
src/main/resources 配置文件
src/test/java 測試程序
另外,springBoot在新增目錄的時候給出了官方的建議,root package結構:com.example.myproject。
com +- example +- myproject +- Application.java | +- domain | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- controller | +- CustomerController.java |
其中:
1.Application.java 建議放到根目錄下面,主要用於作一些框架配置
2.domain目錄主要用於實體(Entity)與數據訪問層(Repository)
3.service 層主要是業務類代碼
4.controller 負責頁面訪問控制
最後,啓動Application main方法,至此一個java項目搭建好了!控制檯輸出:
有時候由於springboot自帶的一些問題,會出現如下報錯:
能夠將spring-boot-starter-parent版本下降一個或兩個版本,好比本文
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <!-- <version>2.0.2.RELEASE</version> --> <version>1.4.7.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
從新啓動便可。
web模塊開發:
在pom.xml文件中引入
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
pom.xml文件中默認有兩個模塊:
spring-boot-starter :核心模塊,包括自動配置支持、日誌和YAML;
spring-boot-starter-test :測試模塊,包括JUnit、Hamcrest、Mockito。
編寫Restcontroller
@RestController public class Restcontroller { @RequestMapping("/hello.do") public TestObjectBean testStr(){ TestObjectBean objectBean=new TestObjectBean(); objectBean.setId(UUID.randomUUID().toString().replaceAll("-", "")); objectBean.setName("TestDemo"); objectBean.setStatus("open"); return objectBean; } }
TestObjectBean
public class TestObjectBean { private String Id; private String name; private String status; public String getId() { return Id; } public void setId(String id) { Id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } }
瀏覽器訪問,controller裏面的方法都以json格式輸出,不用再寫什麼jackjson配置的了!
單元測試
打開的src/test/下的測試入口,編寫簡單的http請求來測試;使用mockmvc進行,利用MockMvcResultHandlers.print()打印出執行結果。
@RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = MockServletContext.class) @WebAppConfiguration public class RestControllerTest { private MockMvc mvc; @Before public void setUp() throws Exception { mvc = MockMvcBuilders.standaloneSetup(new Restcontroller()).build(); } @Test public void getHello() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/hello.do").accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); } }
備註:舊版的springBoot是用@SpringApplicationConfiguration註解,最新版是用@SpringBootTest
開發環境熱部署調試
springBoot對調試支持很好,修改後能夠實時生效,須要在pom.xml添加如下配置:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build>
該模塊在完整的打包環境下運行的時候會被禁用。若是你使用java -jar啓動應用或者用一個特定的classloader啓動,它會認爲這是一個「生產環境」。