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

目录

  • 目录
  • 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
@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.bootgroupId>
  <artifactId>spring-boot-devtoolsartifactId>
  <optional>trueoptional>
dependency>

插件中添加fork属性

<plugin>
  <groupId>org.springframework.bootgroupId>
  <artifactId>spring-boot-maven-pluginartifactId>
  <configuration>
    <fork>truefork>
  configuration>
plugin>

方式二(反面教程) : springloaded 这种方式我在idea上测试一直没有通过,pom.xml配置如下:

<plugin>
  <groupId>org.springframework.bootgroupId>
  <artifactId>spring-boot-maven-pluginartifactId>
  <dependencies>
    
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>springloadedartifactId>
      <version>1.2.6.RELEASEversion>
    dependency>
  dependencies>
plugin>

这几天我会再研究下这个,有结果再补充吧,哪位同学在IDEA用这种方式配置成功的话请赐教 - -#

最后说下IDEA默认是不自动编译的,所以要开启IDEA自动编译如下操作:
第一步:将Make project automatically打钩
Spring Boot : 自动JSON转换和热部署(二)_第1张图片

第二步 : command + shift + A (mac IDEA) / ctrl + shift + alt + A (win IDEA) 后输入Registry , 勾选compiler.automake.allow.when.app.running
Spring Boot : 自动JSON转换和热部署(二)_第2张图片
Spring Boot : 自动JSON转换和热部署(二)_第3张图片

你可能感兴趣的:(Spring,Boot)