目錄
1.Spring Boot 請求傳參
先舉幾個簡單請求傳參的例子,其實和註解式開發很像。
package cn.milo.controllor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
/**
* Created by admin on 2017/6/25.
*/
/*
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
@RestController註解相當於@ResponseBody + @Controller合在一起的作用。
@EnableAutoConfiguration註釋,此註釋自動載入應用程序所需的所有Bean
*/
@RestController
@EnableAutoConfiguration
public class SampleController {
//請求 http://localhost:8080/
@RequestMapping("/")
public String HelloWorld(){
return "Hello Spring Boot";
}
//請求 http://localhost:8080/demo2
@RequestMapping("/demo2")
@ResponseBody
public String demo2(){
return "hello world2";
}
//請求 http://localhost:8080/demo4/milo
@RequestMapping("/demo4/{username}")
@ResponseBody
public String demo4(@PathVariable("username") String username){
return "hello " + username;
}
//請求 http://localhost:8080/demo4/5 (這裏的id可以動態識別爲int)
@RequestMapping("/demo5/{id}")
@ResponseBody
public String demo5(@PathVariable("id") int id){
return "hello " + (id + 21) ;
}
@RequestMapping(value = "/demo6" , method = RequestMethod.GET)
@ResponseBody
public String demo6(){ //get 請求
return "hello world6";
}
@RequestMapping(value = "/demo7" , method = RequestMethod.POST)
@ResponseBody
public String demo7(){ //post請求
return "hello world7";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
2.Spring Boot JSON轉換
Spring Boot自動可以將對象轉換成JSON返回。
寫一個User的類如下:
package cn.milo.bean;
/**
* Created by admin on 2017/6/26.
*/
public class User {
private String username;
private String nickname;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
在Controller中添加
@RequestMapping("/demo9")
@ResponseBody
public User demo9() {
User user = new User();
user.setAge(18);
user.setUsername("milo");
user.setNickname("milo123");
return user;
}
請求 http://localhost:8080/demo9 頁面如下:
3.Spring Boot 熱部署
我們開發過程中經常會出現改了一行java代碼也要重啓tomcat,而且有時候項目比較大,重啓tomcat要將近10s的時間。Spring Boot爲我們提供了熱部署功能
方式一 : spring-boot-devtools (spring-boot:run和執行main方法均有效)
spring-boot-devtools 是一個爲開發者服務的一個模塊,其中最重要的功能就是自動應用代碼更改到最新的App上面去。原理是在發現代碼有更改之後,重新啓動應用,但是比速度比手動停止後再啓動還要更快,更快指的不是節省出來的手工操作的時間。
其深層原理是使用了兩個ClassLoader,一個Classloader加載那些不會改變的類(第三方Jar包),另一個ClassLoader加載會更改的類,稱爲 restart ClassLoader
,這樣在有代碼更改的時候,原來的restart ClassLoader 被丟棄,重新創建一個restart ClassLoader,由於需要加載的類相比較少,所以實現了較快的重啓時間(5秒以內)本段引用自 : (40). springboot + devtools(熱部署)【從零開始學Spring Boot】
pom.xml添加依賴
<!-- 熱部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
插件中添加fork屬性
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
方式二(反面教程) : springloaded 這種方式我在idea上測試一直沒有通過,pom.xml配置如下:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<!-- spring熱部署 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
</dependencies>
</plugin>
這幾天我會再研究下這個,有結果再補充吧,哪位同學在IDEA用這種方式配置成功的話請賜教 - -#
最後說下IDEA默認是不自動編譯的,所以要開啓IDEA自動編譯如下操作:
第一步:將Make project automatically打鉤
第二步 : command + shift + A (mac IDEA) / ctrl + shift + alt + A (win IDEA) 後輸入Registry , 勾選compiler.automake.allow.when.app.running