筆者最近在學習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
請求返回值: