为什么你学了n遍《1天精通springboot》,至今还是不精通springboot
,甚至还是停留在学生项目
?真正要做项目就应该一步到胃,半吊子半桶水是不行的。一个实战项目需要充分考虑状态码
、异常处理
、日志处理
、性能监控
、数据安全
、部署
等等因素,而不是急于求成,为了达到1天精通的目标而糊弄过去。本专题的对象是后端小白,目标是搭建一套完善的Springboot后端框架,不至于项目跑起来,分分钟解体
码云地址:https://gitee.com/chaitou/leilema.git
Hello world俗话说,hello world
生万物!
傻瓜式创建,真真是傻瓜式,就一路next…
稍等片刻以后,等项目加载成功后,添加依赖。
org.springframework.boot
spring-boot-starter-web
这里详细讲下spring-boot-starter-web
这个依赖。springboot
的项目往往以xxxx-starter
命名,springboot
之所以受欢迎便是因为其约定大于配置
的思想,默认的帮我们做了很多事情,而这便是其中一个例子。
可以看到我们引入一个spring-boot-starter-web
,而实际上springboot
就帮我们引入了spring-web
、mvc
、tomcat
等等包。方便了开发人员又是找包,又是适配版本,还得配tomcat
的苦恼
controller层为控制层,主要处理外部请求。调用service层,将service层返回的PO转化为DTO/VO并封装成统一返回对象返回给调用方
这里就不多累赘了,就是前后端交互的控制器,这里写一个最简单的hello world
,前端用get
请求,后端接收到请求后返回hello world
。小白的话先抄把,后面有专门的文章讲controller
层
@RestController
public class HelloWorldController {
@GetMapping("/hello")
public String helloWorld() {
return "hello springboot!";
}
}
强调一下@Controller
和@RestController
有什么区别(初小白可以先跳过):
@Controller
是用来标识当前类是controller
类的,spring扫描到这种类时便会建立handle
,当前端请求过来时调用匹配的handle
。那么@RestController
又是什么呢?进去看一下@RestController
的源码
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(
annotation = Controller.class
)
String value() default "";
}
可以看出,其实@RestController
= @Controller
+ @ResponseBody
@responseBody
注解将controller的方法返回的数据写入到response
对象的body
区。
也就是说@Controller
返回的可能是视图也可能是数据。但是@RestController
则一定是数据,并且自动的写入到response
的body
中。
由于我们搭建的目标是Restful风格的纯后端项目,所有与前端的交互都通过json
,至于视图
的跳转控制,完全由前端实现,后端不关心。所以项目的所有controller
,都将使用@RestController
进行注解
是不是很简单?比起spring mvc项目,还得配tomcat
等等环境,springboot
可以说是简单多了。要想实战一个项目,首先我们得有个项目!没有项目?那就new一个项目。下一节介绍一下将要完成的项目目标,以及如何拉取github上的完整项目,更好的进行学习