笔者最近在学习Spring相关的知识,坚信一句话,任何教程都没有官网教程全面、易懂,所以笔者计划参照官网的教程写一些例子,自己学习一下,也做下记录,由于官方教程大部分都是基于Spring boot,所以笔者也按Spring boot框架来编写代码。
工具用的Idea和包管理器用的通用的Maven,教程。
第一个例子肯定就是程序员的开始——Hello World。
首先我们定义一个类,用来作为Restful的返回值,也就是接口返回值。后期所有的接口返回值都是这个类。
ResultBean
package hello;
public class ResultBean {
private static int SUCCESS = 0;
private static int FAIL = 1;
private Integer code;
private String errorMsg;
private Object data;
static public ResultBean ok(){
ResultBean bean = new ResultBean();
bean.setCode(SUCCESS);
return bean;
}
static public ResultBean ok(Object data){
ResultBean bean = new ResultBean();
bean.setCode(SUCCESS);
bean.setData(data);
return bean;
}
static public ResultBean error(){
ResultBean bean = new ResultBean();
bean.setCode(FAIL);
return bean;
}
static public ResultBean error(String msg){
ResultBean bean = new ResultBean();
bean.setCode(FAIL);
bean.setErrorMsg(msg);
return bean;
}
static public ResultBean error(Integer errorCode, String msg){
ResultBean bean = new ResultBean();
bean.setCode(errorCode);
bean.setErrorMsg(msg);
return bean;
}
public void setCode(Integer code) {
this.code = code;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public void setData(Object data) {
this.data = data;
}
public Integer getCode() {
return code;
}
public String getErrorMsg() {
return errorMsg;
}
public Object getData() {
return data;
}
}
开始Hello World。
pom文件里添加Spring boot web依赖。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
创建main入口方法的Application类。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
其中,@SpringBootApplication 是以下三个注解的组合注解:
1. @Configuration,表示本类是Application容器的配置类。
2. @EnableAutoConfiguration,表示启用默认配置Spring上下文,根据通用模式加载对应的配置。
3. @ComponentScan,表示扫描本类所在的目录下所有的包下带有@Service, @Component, @Controller作为Bean,加载带Spring上下文中。
实现一个Controller。
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public ResultBean hello(@RequestParam(value="name", defaultValue="World") String name) {
return ResultBean.ok("hello " + name);
}
}
其中:@RestController是@Controller和@ResponseBody的组合注解,表示当前Controller是Rest风格,会以接口的形式调用,方法的返回值就是请求的返回值,不会再去渲染页面。
本示例的意思是一个默认值为“World”参数,返回”Hello”+ name。
启动程序并在浏览器中输入:
http://localhost:8080/hello?name=CYF
请求返回值: