概述
本文简单记录了使用Spring Boot搭建服务器的过程
1. 在eclipse搭建Maven 项目
2. maven 配置文件pom.xml增加依赖包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
3. 编写代码, 我的代码结构如下
4. 编写启动入口
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
5. 编写最简单的Hello接口, 接口定位都放在controller包中
@Controller
@RequestMapping("/firstSpringBoot")
public class ResponseController {
@RequestMapping("/hello")
public String hello() {
return "Hello";
}
Controller 是 Spring 中最基本的组件,主要是处理跟用户交互的,一般每个业务逻辑都会有一个 Controller,提供给用户 http 请求接口,用户请求接口进行数据访问。
Controller有以下有些常用的注解
@Controller:标注 Controller 类,处理 http 请求
@RestController = @Controller + @ResponseBody主要是为了使 http 请求返回数据格式为 json 格式,一帮情况下使用这个注解
@RequestMapping:配置 url 映射,可以作用于类上,也可以在方法上
以下接口 在访问http://localhost:8080/firstSpringBoot/hello 会返回"Hello"字段
@RequestMapping 可以指定GET,POST,DELETE,PUT四种标准的 Restfulapi请求方法 method没有指定默认为get请求
@GetMapping = @RequestMapping + method = RequestMethod.GET
@PostMapping = @RequestMapping + method = RequestMethod.POST
@RequestMapping(value= "/getResponse" , method = RequestMethod.GET)
public Response getResponse() {
return responseServiceImpl.getResponse("test");
}
如果返回的是对象, 那会默认将对象转换为Json格式返回
public class Response {
private int code;
private String message;
private List<String> messages;
。。。。。。
}
返回结果:
@PathVariable @RequestParam都可以用于GET请求加参数,以下是两者的区别
使用@RequestParam接收参数,如下图
@GetMapping(value= "/getMessagePath")
public Response getResponse(@RequestParam(value="message") String message) {
return responseServiceImpl.getResponse(message);
}
url结构:
url=.../getMessagePath?message=${message}
@PathVariable
@RequestMapping(value= "/getMessage/{message}", method = RequestMethod.GET)
public Response getMessage(@PathVariable(value="message") String message) {
return responseServiceImpl.getResponse(message);
}
url结构:url=.../getMessage/${message} 占位符的方式
POST 请求可以使用如下几种方式:
@RequestMapping(value= "/getMessage", method = RequestMethod.POST)
public Response getMessage(int code, String message) {
return responseServiceImpl.getResponse(code, message);
}
发送该请求如下:
也可以使用如下形式发送请求
POST使用 @RequestBody
@PostMapping(value= "/getMessageBody")
public Response getMessagePost(@RequestBody PostBean bean) {
return responseServiceImpl.getResponse(bean.getCode(), bean.getMessage());
}
public class PostBean {
private int code;
private String message;
private List<String> messages;
。。。。
}
使用以下方式请求
3. 运行方式
Spring boot自带Tomcat作为服务器
书写以下类作为启动入口(@SpringBootApplication作为注解)
@SpringBootApplication
public class TestHello {
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(TestHello.class, args);
}
}
@c用于标注业务层组件
@Service
public class ResponseServiceImpl implements IResponseService{
@Autowired
private ResponseDaoImpl responseDaoImpl;
@Override
public Response getResponse(String message) {
return responseDaoImpl.getResponse(message);
}
@Override
public Response getResponse(int code, String message) {
// TODO Auto-generated method stub
return responseDaoImpl.getResponse(code, message);
}
}
@controller 中注入@Service
@RestController
@RequestMapping("/firstSpringBoot")
public class ResponseController {
@Autowired
IResponseService responseServiceImpl;
。。。
}
如果需要使用注解方式注入, 那注入的类必须使用注解
@Service
public class ResponseServiceImpl implements IResponseService{
@Autowired
private ResponseDaoImpl responseDaoImpl;
。。。
}
@Repository
public class ResponseDaoImpl implements IResponseDao{
运行启动类
启动以后使用localhost:8080来发送请求。