去年就开始学习SpringBoot的样例Demo,以及和各个框架的配合。
虽然工作中用不到,但这个框架还是非常有用的。
最近想了想,不能落下,所以在GitHub上面创建了项目,专门用来存放自己学习中的SpringBoot的项目。
项目地址:SpringBoot-SpringCloud GitHub项目地址
项目同时打包上传优快云:01-SpringBoot-Demo
好了,开始第一个HelloWorld项目。
使用IDEA 创建SpringBoot 项目这个步骤,这里不在多说,网上去找找,还是很多的。
SpringBoot项目创建好了之后,会自动帮你创建一个Application类,这个是SpringBoot的启动类。
然后写一个自定义Controller类。
package com.server.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* HelloWorld-Controller-测试
*
* @author CYX
* @create 2018-07-01-20:09
*/
@Controller
public class HelloWorldController {
public static final Logger logger = LoggerFactory.getLogger(HelloWorldController.class);
@RequestMapping(value = "/sayHello", method = RequestMethod.GET)
public String sayHello() {
logger.info("-----");
return "Hello Spring Boot";
}
}
按照之前写SpringMVC的习惯,在类上习惯性的加上@Controller注解。
配置一下application.properties
#日志设置
logging.file=./log/01-springboot-demo.log
logging.level.root=info
然后就可以直接运行main方法了。
项目运行了。
使用Postman,测试一下。
结果又点意外,竟然是404。
看下控制台的日志:
已经进入到controller类方法中了...为啥会是404呢...
上网查了一把,原来是类上@Controller注解的问题。
将@Controller改为@RestController就可以了,重新发布一下程序,重新调用。
没问题。
那么问题来了,为啥使用@RestController可以,@Controller不行呢?
看下区别:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思是:@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
如果返回String或json的话,类上应该用@RestController注解。
如果是页面跳转的话,那就是@Controller。