先举几个简单请求传参的例子,其实和注解式开发很像。
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);
}
}
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 页面如下:
我们开发过程中经常会出现改了一行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打钩
第二步 : command + shift + A (mac IDEA) / ctrl + shift + alt + A (win IDEA) 后输入Registry , 勾选compiler.automake.allow.when.app.running