Spring Boot : 自動JSON轉換和熱部署(二)

目錄

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
這裏寫圖片描述
這裏寫圖片描述

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