# 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秒以内)。