文章目录
1 引言
1.1 Spring 传统项目分析
核 心 : 资 源 整 合 框 架 \color{#f01}{核心:资源整合框架} 核心:资源整合框架
- 资源小
- 耦合小
- 可扩展性大!
但是。
在传统的 spring
应用项目中:
- 配置相对复杂(例如大量
xml
)。 - 依赖冲突严重(
maven
依赖版本不同)。 - 扩展相对复杂 (尤其是分布式部署,微服务架构)。
思考:如何让初级程序员从复杂的配置中解脱出来呢?
1.2 Spring 家族技术发展
Spring
诞生于2002年,成型于2003,目前已经发展到了 Spring5.x
版本,支持 JDK-11
及 JavaEE8
。
现在的 spring
已经不仅仅是 framework
,还扩展了 spring boot
, spring cloud
等。
说明:学技术一定要了解技术发展史,并对技术的发展有一定的前瞻性。
文章目录
2 Spring Boot 简介
2.1 Spring Boot 概述
现在软件市场已经形成一定的规模,
系统从
- 单体架构,
- 分布式架构,
- 再到微服务架构,
其整个架构体系正在发生很大变化,
企业现在更注重技术的开箱即用,更注重技术在生态圈中的深度融合,更注重轻量级的运维。
由 此 s p r i n g b o o t 诞 生 \color{#f01}{由此spring boot诞生} 由此springboot诞生。
2.2 Spring Boot 核心特性
Spring boot
构建于 Spring
框架基础之上,基于快速构建理念,提供了自动配置功能,可实现其开箱即用特性,可以简化整个项目的配置。
其核心主要包括如下几个方面:
- 起步依赖(
Starter Dependency
)。 - 自动配置(
Auto Configuration
)。 - 健康检查(
Actator
)。
其中,Spring Boot官方地址为https://spring.io/projects/spring-boot。
文章目录
3 Spring Boot 快速入门
3.1 初始环境配置
3.1.1 准备工作
工具下载
- 下载
JDK1.8
,并进行环境变量配置。 - 下载maven ( 例如
apache-maven-3.6.2
,网址 http://maven.apache.org/ ),并进行相关配置(本地库,私服)。 - 下载
sts
最新版(例如sts-4.4.2.RELEASE
,网址 https://spring.io/tools )。
工作区准备
定义新的工作区( 要 求 没 有 中 文 目 录 \color{#f01}{要求没有中文目录} 要求没有中文目录),例如 d:/workspacests
。
3.1.2 Maven基本配置
打开 maven
中的 setting.xml
文件,并对其如下选项进行配置。
配置maven本地库,
<localRepository>${user.home}/maven/repository</localRepository>
配置maven私服。
<mirror>
<id>aliyun</id>
<name>aliyun Maven</name>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
配置maven中的profile。
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
3.1.3 STS整合maven配置
Maven Installations 配置, 如图-1所示:
Maven User Settings配置,如图-2所示:
项目工作区编码设置,如图-3所示
个人习惯,我gbk
3.1.4 STS工具使用基本优化
禁用拼写检查,取消图-4所示的拼写检查选项。
取消图-5所示的连接选项配置。
否则
Ctrl+v
Ctrl+c
时候会有卡顿
关掉图-6的校验功能。
否则可能会一直校验,导致无法编译
修改STS工具内存配置,打开SpringToolSuite4.ini文件,修改堆大小,如图-7所示:
堆内存越大越快(你电脑支持的话)
3.2 项目创建及结构分析
导入项目:如果是从
springboot
官网下载的模板,选择Input Exist Maven Project
。
如果是已经存在的结构完整的目录,要导入,直接在 general 导入。
基于 STS
集成开发工具,创建 spring boot
项目,其具体步骤如下:
第一步:打开项目新建窗口(快捷键 ctrl+n
), 搜索 spring
,选择 spring starter
项目。如图-8所示:
第二步:填写项目基本信息。如图-9所示:
注 意 选 择 J a r 包 \color{#f01}{注意选择 Jar 包} 注意选择Jar包。war包
现在越来越少用…
- group
- Artifact 项目名
- package 包名 - 一般同 group
第三步:选择Spring Boot版本,如图-10所示:
3.3 项目业务初步实现及测试
业务描述:创建一个DefaultCache类然后交给spring 管理。
package com.cy.pj.common.cache;
@Component
@Scope("singleton")
public class DefaultCache {
public Cache() {
System.out.println("cache()");
}
@PostConstruct
public void init() {
System.out.println("init()");
}
@PreDestroy
public void destory() {
System.out.println("destory");
}
}
添加 springboot
测试类,进行 bean
的获取及测试。
@SpringBootTest
public class DefaultCacheTests {
@Autowired
private DefaultCache defaultCache;
@Test
public void testCache() {
System.out.println(defaultCache);
}
}
其中:
@SpringBootTest
注解用于告诉spring
框架,此测试类交给spring
管理。
3.4 项目业务增强实现及测试
第一步:定义业务 Cache
接口.
package com.cy.pj.common.cache;
public interface Cache {
}
第二步:定义 WeakCache
实现 Cache
接口.
package com.cy.pj.common.cache;
import org.springframework.stereotype.Component;
@Component
public class WeakCache implements Cache{
}
第三步:修改 DefaultCache
,让此类也实现 Cache
接口,关键代码如下:
@Component
public class DefaultCache implements Cache{
…
}
第四步:定义单元测试类
package com.cy.pj.common.cache;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class CacheTests {
@Autowired
@Qualifier("defaultCache")
private Cache cache;
@Test
public void testCache() {
System.out.println(cache);
}
}
思考:
@Autowired
注解应用规则?@Qualifier
注解的作用是什么?
文章目录
4 Spring Boot 整合数据源
测试类 - mybatis - DataBase
mybatis 内部
4.1 数据初始化
打开mysql控制台,然后按如下步骤执行goods.sql文件:
第一步:登录mysql
mysql –uroot –proot
第二步:设置控制台编码方式
set names utf8;
第三步:执行goods.sql文件(注意反斜杠问题)
source d:/goods.sql
4.2 单数据源整合实现 (重点掌握)
4.2.1 使用默认的HikariCP
第一步:添加依赖。
编辑项目中 pom.xml
,右键项目的 pom.xml
文件,选择 spring
,如图-11所示:
查找 mysql
驱动依赖, JDBC API
依赖,如图-12所示:
依赖添加以后,在pom.xml文件中会自动添加如下两个依赖配置:
mysql
数据库驱动依赖。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
spring
对象jdbc支持。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
第二步:配置连接池
打开application.properties配置文件,添加如下内容。
spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
第三步:单元测试
@SpringBootTest
public class DataSourceTests {
@Autowired
private DataSource dataSource;
@Test
public void testDataSource() throws Exception{
System.out.println(dataSource.getConnection());
}
}
思考:市场说HiKariCP连接池性能相对较高,那么他的性能为什么好?在哪些方面做了优化设计?(课后拓展)
4.2.2 整合Druid对象
Druid是阿里巴巴推出一个为监控而生的开源连接池对象.在SpringBoot应用的使用步骤如下:
第一步:添加druid启动依赖(可以从mvnrepository.com站点去查找)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.13</version>
</dependency>
Druid是阿里巴巴推出一个为 监控而生 的 源连接池对象.在SpringBoot应用的使用步骤如下:
第一步:添加druid启动依赖(可以从mvnrepository.com站点去查找)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.13</version>
</dependency>
第二步:配置数据源
打开application.properties配置文件,修改连接池内容配置。
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql:///dbgoods?characterEncoding=utf-8&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
第三步:简化写法,可以省略驱动
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql:///dbgoods?characterEncoding=utf-8&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=root
第四步:单元测试
@SpringBootTest
public class DataSourceTests {
@Autowired
private DataSource dataSource;
@Test
public void testDataSource() throws Exception{
System.out.println(dataSource.getConnection());
}
}
思考:为什么添加了druid依赖并进行了建议配置以后,再次获取数据源对象时,直接就是Druid对应的数据源对象呢?(与系统底层的自动配置有关)
4.3 多数据源整合实现(扩展)
本小节作为课后扩展练习(自己实现,也可以学了AOP以后再实现)。
文章目录
5 Spring Boot 整合MyBatis
5.1 初始配置
5.1.1 添加mybatis启动依赖
参考官网 mybatis.org/spring,找到springboot菜单选项.
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
5.1.2Mybatis简易配置
在spring boot的配置文件application.properties文件中添加如下内容
mybatis.configuration.default-statement-timeout=30
mybatis.configuration.map-underscore-to-camel-case=true
logging.level.com.cy=DEBUG
其中,logging.level.com.cy=DEBUG 表示要对com.cy包中的DEBUG操作日志做输出。
5.2业务分析及实现
5.2.1基本业务实现及单元测试
定义商品业务数据层接口及业务方法。
package com.cy.pj.goods.dao;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public