暑期自学 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.xmlspring-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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!