SpringBoot - 37~44 插件:热部署、lombok

文章目录


1 引言

1.1 Spring 传统项目分析

核 心 : 资 源 整 合 框 架 \color{#f01}{核心:资源整合框架}

  • 资源小
  • 耦合小
  • 可扩展性大!

但是。
在传统的 spring 应用项目中:

  • 配置相对复杂(例如大量 xml )。
  • 依赖冲突严重( maven 依赖版本不同)。
  • 扩展相对复杂 (尤其是分布式部署,微服务架构)。

思考:如何让初级程序员从复杂的配置中解脱出来呢?

1.2 Spring 家族技术发展

Spring 诞生于2002年,成型于2003,目前已经发展到了 Spring5.x 版本,支持 JDK-11JavaEE8
现在的 spring 已经不仅仅是 framework ,还扩展了 spring bootspring 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 准备工作

工具下载
  1. 下载JDK1.8,并进行环境变量配置。
  2. 下载maven ( 例如apache-maven-3.6.2,网址 http://maven.apache.org/ ),并进行相关配置(本地库,私服)。
  3. 下载 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 包} Jarwar包 现在越来越少用…

  • 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);
	}
}

思考:

  1. @Autowired 注解应用规则?
  2. @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文件中会自动添加如下两个依赖配置:

  1. mysql 数据库驱动依赖。
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>
  1. 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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骆言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值