# spring-cloud-base
**Repository Path**: getChao_admin/spring-cloud-base
## Basic Information
- **Project Name**: spring-cloud-base
- **Description**: No description available
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-05-07
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# spring-cloud-base
# 基础项目
## 通用实体项目
* base-model
## 服务注册中心
* discovery-eureka-single:单节点 无认证
* discovery-eureka-single-security:单节点 有认证
* discovery-eureka-ha1、discovery-eureka-ha2:多节点 无认证
* discovery-eureka-ha-security1、discovery-eureka-ha-security2:多节点 有认证【后续使用】
## 服务提供方
* provider-business-service1、provider-business-service1:多节点 有认证【后续使用】
* provider-business-service1-without-eureka、
provider-business-service2-without-eureka: 有认证,没有Eureka注册中心
## 服务消费方
* comsumer-business-service1-org:有认证 RestTemplate方式调用
* comsumer-business-service1-ribbon:有认证 RestTemplate方式调用,并且使用ribbon进行负载均衡基础使用
* comsumer-business-service3-ribbon-without-eureka、
provider-business-service1-without-eureka、
provider-business-service2-without-eureka
有认证 没有使用注册中心 RestTemplate方式调用,并且使用ribbon进行负载均衡基础使用,
注意此时负载均衡不能加载RestTemplete上
* comsumer-business-service4-feign 有认证 feign方式调用
* comsumer-business-service5-feign-hystrix 有认证 feign方式调用 增加熔断机制
* comsumer-business-service6-feign-hystrix-factory 有认证 ribbon 方式调用 增加熔断机制
## service-db 数据库操作项目
首先:springboot默认支持的连接池有dbcp,dbcp2, tomcat, hikari四种连接池
* 由于Tomcat数据源连接池的性能和并发,在tomcat可用时,我们总是优先使用它。
* 如果HikariCP可用,我们将使用它。
* 如果Commons DBCP可用,我们将使用它,但在生产环境不推荐使用它。
* 最后,如果Commons DBCP2可用,我们将使用它
即自动优先级tomcat>HikariCP>DBCP>DBCP2
注意:2.0后将HikariCP设置为默认链接池
#### springboot数据库连接:
* 有两种方法与数据库建立连接,一种是集成Mybatis,另一种用JdbcTemplate
* 用JdbcTemplate需要的包:
mysql-connector-java、spring-boot-starter-jdbc
* 集成mybatis需要的包:
mysql-connector-java、spring-boot-starter-jdbc、mybatis-spring-boot-starter
### service1-mysql-mybatis-c3p0
1.mybatis generate plugin 逆向工程
1.1.添加mybatis generate plugin插件
```$xslt
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.5
src/main/resources/generator/generatorConfig.xml
true
true
log4j
log4j
1.2.17
org.mybatis
mybatis
3.4.5
mysql
mysql-connector-java
5.1.41
```
1.2.添加generatorConfig文件
1.3.运行 mybatis-generator:generate 即可
2.mysql mybatis c3p0 的pom配置
```$xslt
mysql
mysql-connector-java
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.1
org.springframework.boot
spring-boot-starter-jdbc
c3p0
c3p0
0.9.1.2
```
3.application.xml配置
```$xslt
# 设置数据库相关
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
# 设置 c3p0 数据源
spring.datasource.type=com.mchange.v2.c3p0.ComboPooledDataSource
# 方式一、设置 MyBatis mapper 的别名所在的包
mybatis.type-aliases-package=com.lhx.springcloud.provider.business.mapper
# 设置 mapper 接口对应 XMl 配置文件的路径
mybatis.mapper-locations=classpath:mappers/auto/*.xml
```
4.启动类配置
```$xslt
@MapperScan("com.lhx.springcloud.provider.business.mapper")//将项目中对应的mapper类的路径加进来
```
### service2-mysql-mybatis-c3p0-pagehelper
### service3-mysql-mybatis-dbcp2
### service4-mysql-mybatis-dbcp
### service5-mysql-mybatis-tomcat-jdbc
### service6-mysql-mybatis-hikariCP
### service7-mysql-mybatis-druid
### service8-mysql-mybatis-druid-monitor
# common-util 通用工具帮助
## utils1-hot-deploy 热部署
```$xslt
org.springframework.boot
spring-boot-devtools
true
```
```$xslt
org.springframework.boot
spring-boot-maven-plugin
true
```
* 方式一、启动后,可以使用ctrl+shift+F9 重新编译,编译后会自动部署
* 方式二、或者设置自动编译:setting→build→compiler→ make project automatically;
ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running
* 注意1:spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。
原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手
工操作的时间。
* 注意2:其深层原理是:
使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更
改的类,称为 restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建
一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)。