暑期自学 Day 21 | Spring Boot(一)
Spring 框架优缺点
优点:
- 通过IoC控制反转,将创建对象交给spring的IoC容器,降低了程序间的耦合
- 由于AOP,使spring能够面向切面编程,减少了重复代码
- 声明式事务支持
- 集成支持了主流框架 (Hibernate,Struts2,JPA)
- 方便的测试代码编写
- DI机制降低了业务对象替换的复杂性(更改对象名,方法名,数据库配置等等)
- 对很多Java EE API进行了封装,降低了它们的使用难度(JDBC, JavaMail…)
缺点
- 组件代码轻量级,配置重量级。配置过于繁琐。
- 搭建环境时项目的依赖关系分析交复杂。
Spring Boot
- 解决 Spring 框架的缺点
- 没有代码生成,无需XML配置。快速配置。
- 提供了一些大型项目中非功能性特性。(嵌入式服务器,)
- 核心功能:
- 起步依赖
- Maven 项目对象模型(POM),定义了对其他库的传递依赖
- 自动配置
- 应用程序启动时配置的过程,自动完成
- 起步依赖
热部署
在pom.xml
中spring-boot-devtools
坐标,使修改代码时无需重启项目即可生效。
入门部署代码
- 在pom.xml中继承SpringBoot的起步依赖spring-boot-starter-parent
- 添加spring-boot-starter-web依赖进行web开发
- 编写SpringBoot引导类,是为了启动 spring boot 项目,此引导类将扫描其同级包及其子包中的所有程序。
- 编写controller,使用@Controller, @RequestMapping, @ResponseBody 注解
- 进行测试
起步依赖
- 所有 spring boot 项目必须继承 spring-boot-starter-parent,因为里面已经配置好了 spring 所需的各种依赖。
- 同样,导入的依赖 spring-boot-starter-web 和 spring-boot-starter-test 也有同样的依赖打包。
自动配置
- @SpringBootApplication 包含了很多其他注解。
- 如@SpringBootConfiguration,意味开启了Spring Boot功能
- @EnableAutoConfiguration,开启了自动配置
- @ComponentScan,扫描需要的类,包括和 Spring Boot 开启类同级的包以及其子包所有的类。
Spring Boot 集成其他技术
Mybatis
- 添加 Mybatis 的起步依赖和 Mysql 的依赖
- 在application.properties中配置数据库连接信息
- 注意新版本mysql依赖中需要我们在信息中明确时区
- 创建数据表(案例中是user表)
- 创建user表的实体Bean(包含各个参数的setter和getter)
- 编写Mapper接口,其中是相关的数据库操作成员方法。
- 配置UserMapper.xml,实现数据库操作语句
- 在application.properties配置mybatis信息(要扫描的包,映射文件)
- 在controller中测试mybatis的使用
Junit
问题:spring boot 已经在 pom.xml 中为我们添加了测试相关的依赖
spring-boot-starter-test
,由于默认使用 junit5,而 spring boot 2.x.x 只支持 junit4,所以在测试类中使用 @RunWith 注解会报错。解决:我们需要将其中的
exclusions
删除,因为所排出的junit-vintage-engine
中包含了junit4的依赖,这正是我们需要的。解决此问题后,我们在测试类前使用
@RunWith(SpringRunner.class)
以及@SpringBootTest(SpringApplication.class)
注解导入引导类。使用
@AutoWired
注解自动注入所需测试的对象。在测试方法前加
@Test
注解
本作品采用《CC 协议》,转载必须注明作者和本文链接