首页 > 编程语言 > 详细

进化,从Spring到SpringBoot

时间:2021-07-06 20:04:15      阅读:51      评论:0      收藏:0      [点我收藏+]

?

文章目录

  • 一、前言
  • 二、Spring项目
    • 2.1 Spring步骤
    • 2.2 Spring具体实现
    • 2.3 小结
    • 2.4 spring整合mybatis
      • 2.4.1 导入五个依赖、构建好三层
      • 2.4.2 完成dao层,User.java Mapper.java Mapper.xml
      • 2.4.3 service层,IUserService.java UserServiceImpl.java
      • 2.4.4 完成controller层,UserController.java
      • 2.4.5 spring配置文件、springmvc配置文件、数据库表设计
      • 2.4.6 运行成功
    • 2.5 SSM小结
  • 三、Springboot项目
    • 3.1 Springboot项目引入
    • 3.2 Springboot具体实现
    • 3.3 Springboot约定优于配置-Springboot的四大约定
      • 3.3.1 只要依赖spring-boot-starter-web的jar包,就会自动内置一个tomcat容器(可以替换)
      • 3.3.2 项目结构的约定
      • 3.3.3 默认提供配置文件application.properties
      • 3.3.4 spring-boot-starter-web的jar包提供自动依赖/启动依赖,如果是一个webstarter,默认认为你是构建一个spring mvc的应用
    • 3.4 Springboot整合mybatis
      • 3.4.1 导入两个依赖、构建好三层、配置好数据库四个
      • 3.4.2 完成dao层,dao.entity.User.java dao.mapper.UserMapper.java resources.UserMapper.xml
      • 3.4.3 完成services层,services.IUserService.java services.impl.UserServiceImpl.java
      • 3.4.4 完成controller层,controller.HelloController.java
      • 3.4.5 数据库表设计和启动类
      • 3.4.6 运行成功
    • 3.5 springboot小结
    • 附:springboot没有视图解析器,如果完成页面跳转?
  • 四、小结

?

一、前言

从spring到springboot的三个原因
Spring本身配置的重量化
Spring web项目的配置太多
微服务的萌芽阶段,需要一个轻量级框架

idea快捷键 search everything double shift

SSM与springboot的关系:
springboot并不是SSM的升级,而是spring+springMVC的简化,即
springboot == SSM 错误
springboot + Mybastis == SSM 正确
即,使用springboot,还是需要Mybatis的。

二、Spring项目

2.1 Spring步骤

1、创建一个maven项目结构
2、pom.xml添加两个依赖:spring-context的依赖、spring-webmvc的依赖
3、web.xml DispatcherServlet
4、启动一个springmvc的配置,Dispatcher-servlet.xml
5、创建一个controller,发布一个http请求
6、发布到jsp/servlet容器

Spring需要 1 2 3 4 5 6,但是Springboot仅需要 5 黑体标粗。

2.2 Spring具体实现

1、基于maven搭建webapp项目

技术分享图片

2、然后,pom.xml添加Spring需要的依赖

技术分享图片

3、web.xml中添加servlet

技术分享图片

注意:classpath就是resources目录

4、webapp同级目录下,新建resources/dispatcher.xml

技术分享图片

技术分享图片

servlet-dispatcher.xml 中注解扫描、视图解析
技术分享图片

技术分享图片

5、新建源码目录 source root

技术分享图片

servlet-dispatcher.xml 配置开启注解扫描

技术分享图片
6、部署到tomcat

技术分享图片

技术分享图片

技术分享图片

技术分享图片

7、运行成功,localhost:8080/test,controller中的return值返回至前端

技术分享图片

2.3 小结

①pom.xml导入两个依赖spring-context spring-webmvc;
②web.xml 配置 servlet-dispatcher.xml 或 springmvc-servlet.xml (名称自定义),新建resources/servlet-dispatcher.xml 或 springmvc-servlet.xml;
③工程文件java 设置controller。

2.4 spring整合mybatis

2.4.1 导入五个依赖、构建好三层

技术分享图片

技术分享图片

2.4.2 完成dao层,User.java Mapper.java Mapper.xml

技术分享图片

技术分享图片

技术分享图片

2.4.3 service层,IUserService.java UserServiceImpl.java

技术分享图片

技术分享图片

【源码解析002】告诉我们,一定要告诉Spring ioc容器具体类,所以这里ServiceImpl实现类需要注解,但是Service接口不用注解
技术分享图片

2.4.4 完成controller层,UserController.java

技术分享图片

2.4.5 spring配置文件、springmvc配置文件、数据库表设计

技术分享图片

技术分享图片

数据库表设计

技术分享图片

2.4.6 运行成功

技术分享图片

2.5 SSM小结

附1:IOC和DI
IOC 反转控制 是Spring的基础,Inversion Of Control 简单说就是创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象。
DI 依赖注入 Dependency Inject. 简单地说就是拿到的对象的属性,已经被注入好相关值了,直接使用即可。

附2:spring配置文件和springmvc配置文件
SSM两个配置文件(web.xml指定两个配置文件 servlet-dispatcher.xml/springmvc-servlet.xml 和 mybatis xml配置)
第一个配置文件,springmvc的配置文件,对于web.xml将拦截到的请求(一般是所有请求)转发到ServletDispatcher对应的xml配置文件,一般是包含视图解析器扫描spring注解component-scan,视图解析器属于springmvc,扫描spring注解属于spring。视图解析器只有在controller返回ModelAndView,需要打开jsp页面时定位jsp页面使用,如果controller返回值字符串String和类对象,前端直接显示,没用。扫描spring注解component-scan主要是扫描@Controller @Service @Repository,使controller service entity 不再 applicationContext.xml / servlet-Dispatcher.xml 中配置,还是用@Autowired/@Resource 自动注入,不再需要setter-getter,主要是controller service
第二个配置文件,spring的配置文件,数据库连接四个常量 + MapperScan + Mapper.xml 路径

三、Springboot项目

3.1 Springboot项目引入

springboot 在约定优于配置理念下,是 springframework 的脚手架,快速高效的构建应用。
springboot starter-web的jar,会自动内置一个tomcat,不再需要配置tomcat了。

技术分享图片

3.2 Springboot具体实现

技术分享图片

技术分享图片

注意1:构建springboot项目之前,配置好全局maven。idea 配置全局默认maven ,File/Other Settings/Default Settings…/Maven, File/Settings/Maven 只能配置当前项目的maven,新建springboot项目要先配置好默认的Maven相关,因为在新建springboot项目的时候无法配置。
注意2:构建springboot项目开始:idea新建springboot项目的时候,可以使用 https://start.aliyun.com/ 或者 https://start.spring.io 或者 http://start.spring.io ,笔者这里使用 http://start.spring.io 。
注意3:启动Springboot项目报错:IDEA运行Springboot报错,找不到org.springframework.context.ConfigurableApplicationContext类,可删除本地?/ .m2 / repository / org / springframework下的文件夹并运行。

3.3 Springboot约定优于配置-Springboot的四大约定

Springboot是一个依赖优于配置理论的产物,主要包括四个约定。
1、只要依赖spring-boot-starter-web的jar包,就会自动内置一个tomcat容器(可以替换)
2、项目结构的约定
3、默认提供配置文件application.properties
4、spring-boot-starter-web的jar包提供自动依赖/启动依赖,如果是一个webstarter,默认认为你是构建一个spring mvc的应用

3.3.1 只要依赖spring-boot-starter-web的jar包,就会自动内置一个tomcat容器(可以替换)

像上面的springboot的项目一样,自带tomcat容器,不需要额外提供,值得注意的是,springboot只是模式tomcat服务器,可以替换,一般来说,springboot可以支持四种服务器,分别是 tomcat jetty Undertow Reactor,其中,前三种是Servlet服务器,最后一种是Reactive 服务器。
技术分享图片

3.3.2 项目结构的约定

springboot第二个约定,提供一个同一个项目结构,源工程均是src/main/java
resources资源目录下两个目录一个文件,static目录存放前端静态文件,templates目录存放前端模板(static中放静态页面html,而templates中放动态页面jsp),application.properties用于全局常量配置
技术分享图片

其中,static目录存放前端静态文件,templates目录存放前端模板,application.properties存放全局常量配置信息。

3.3.3 默认提供配置文件application.properties

技术分享图片

技术分享图片

技术分享图片

3.3.4 spring-boot-starter-web的jar包提供自动依赖/启动依赖,如果是一个webstarter,默认认为你是构建一个spring mvc的应用

在springboot项目中,仅依赖spring-boot-starter-web这个jar包,但是却可以完成整个web操作,这是因为其他的jar包依赖都使用 spring-boot-starter-web 自动依赖了,并且都已经匹配上正确的版本,不需要程序员关心。

技术分享图片
技术分享图片

在使用springboot项目的时候,我们再也不用担心少导入的哪个依赖,或者依赖之间的版本匹配问题了,spring-boot-starter-web的自动依赖也是它的一个约定。

在springboot中,只要是使用了spring-boot-starter-web,就默认你是一个spring mvc应用,把需要的依赖自动配置给你了。

3.4 Springboot整合mybatis

3.4.1 导入两个依赖、构建好三层、配置好数据库四个

技术分享图片

技术分享图片

技术分享图片

3.4.2 完成dao层,dao.entity.User.java dao.mapper.UserMapper.java resources.UserMapper.xml

技术分享图片

技术分享图片
技术分享图片

UserMapper.xml尽量放在resources目录下,如果放在src/main/java/com/example/demo/dao/mappers 源码目录下,默认是不会被打包的,放在resources目录下,要在application.properties文件中指定一下。

技术分享图片

3.4.3 完成services层,services.IUserService.java services.impl.UserServiceImpl.java

技术分享图片
技术分享图片

3.4.4 完成controller层,controller.HelloController.java

技术分享图片

注意,一般404都是controller这里的GetMapping错了。

3.4.5 数据库表设计和启动类

技术分享图片

技术分享图片

启动类中为什么要配置@ComponentScan注解:因为springboot只扫描启动类所在包及其子包下面的注解,该项目中启动类在com.example.demo下面,可以去掉@Component(“com.example.demo”)这个注解,如下:
技术分享图片
启动类中为什么要配置@MapperScan注解:@ComponentScan 只能扫描指定目录下spring中的注解,要扫描ibatis中的@Mapper注解,所以这里使用@MapperScan

3.4.6 运行成功

技术分享图片

3.5 springboot小结

? spring +springmvc+mybatis springboot +mybatis
web.xml 指定contextConfigLocation和DispatcherServlet配置文件 没有web.xml文件,没有DispatcherServlet配置文件,没有contextConfigLocation配置文件
视图解析器 在DispatcherServlet配置文件中 没有视图解析器
spring注解扫描器 本项目在DispatcherServlet配置文件中(也可以让springmvc扫描Controller,spring扫描service component/repository) spring注解扫描在启动类中
数据库四个属性 contextConfigLocation配置文件中 application.properties文件中
Mapper类扫描 contextConfigLocation配置文件中 mapper注解扫描在启动类中
Mapper.xml contextConfigLocation配置文件中 application.properties文件中

附:springboot没有视图解析器,如果完成页面跳转?

回答:两种方式,static和templates

新建springboot工程,导入thymeleaf依赖
技术分享图片
四种方式
技术分享图片

注意,controller的方法名尽量不要与页面名称重合,比如这里,都加上了say前缀,sayhello sayhello2 sayhello3 sayhello4

方式1运行成功:

技术分享图片
方式2运行成功:
技术分享图片
方式3运行成功:
技术分享图片
方式4运行成功:

技术分享图片
技术分享图片

四、小结

Springboot是Spring的脚手架,完成对Spring封装,使后台开发更加高效。

spring工程代码:
springboot工程代码
springboot页面跳转工程代码

?

进化,从Spring到SpringBoot

原文:https://blog.51cto.com/u_15287666/2993589

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!