Spring Boot : 自动JSON转换和热部署(二)

来源:互联网 发布:欧莱雅 曼秀雷敦 知乎 编辑:程序博客网 时间:2024/06/05 00:37

目录

  • 目录
  • Spring Boot 请求传参
  • Spring Boot JSON转换
  • Spring Boot 热部署

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@EnableAutoConfigurationpublic 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
这里写图片描述
这里写图片描述