使用 Spring Tool Suite 工具开发,注意和eclipse版本的队员。
步骤:
最后生成的目录结构:
在这里我们可以通过查看pom.xml看看都有哪些包被依赖了进去:
可以看到,当在前面建立工程的时候选择web,默认回引入内置的tomcat。
接下来,代码:
package com.example.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(value = "index") public class IndexController { @RequestMapping public String index() { return "hello spring boot!"; } }
关于RestController标签,查看源码,它其实就是Controller标签的拓展。
访问:
运行:可以使用两种方式,区别就是Spring Boot App在关闭的时候有回调,另外一个没有,具体可以通过控制台日志看出来。开发时候建议使用下面的方式运行。
添加DevTools,它会监控当前项目,如果有更改会自动更新、编译、重启服务器。
继续:
package com.example.controller; import java.util.HashMap; import java.util.Map; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(value = "index") public class IndexController { @RequestMapping public String index() { return "hello spring boot!"; } @RequestMapping(value = "get") public Map<String, String> get(@RequestParam String name) { Map<String, String> map = new HashMap<String, String>(); map.put("name", name); map.put("value", "hello boot"); return map; } }
默认会返回json,已经引入了jackon包。
Controller返回对象:
新建User类:
package com.example.bean; import java.util.Date; public class User { private int id; private String name; private Date date; public int getId() { return id; } public String getName() { return name; } public Date getDate() { return date; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setDate(Date date) { this.date = date; } }
修改Controller:
package com.example.controller; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.example.bean.User; @RestController @RequestMapping(value = "index") public class IndexController { @RequestMapping public String index() { return "hello spring boot!"; } @RequestMapping(value = "get") public Map<String, String> get(@RequestParam String name) { Map<String, String> map = new HashMap<String, String>(); map.put("name", name); map.put("value", "hello boot"); return map; } @RequestMapping(value = "find/{id}/{name}") public User get(@PathVariable int id, @PathVariable String name) { User user = new User(); user.setId(id); user.setName(name); user.setDate(new Date()); return user; } }
访问:
单元测试(使用spring提供的mock):
package com.example; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.RequestBuilder; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import com.example.controller.IndexController; @RunWith(SpringRunner.class) @SpringBootTest public class DemoApplicationTests { private MockMvc mvc; @Before public void before() { this.mvc = MockMvcBuilders.standaloneSetup(new IndexController()).build(); } @Test public void contextLoads() throws Exception { RequestBuilder rq = get("/index"); mvc.perform(rq).andExpect(status().isOk()).andExpect(content().string("hello spring boot!")); } }
打包:
打包后生成目录:
其中,.jar为最终包,会把相关的依赖也包含进去。.original则只是当前代码。
直接java -jar demo-0.0.1-snapshot.jar运行。
时间: 2024-10-12 17:37:58