一:什么是微服务?
- 从技术维度理解
- 优点
- 缺点
- 为什么选择SpringCloud作为微服务架构
a:选型依据如下
整体解决方案和框架成熟度,社区热度,可维护性,学习曲线
b:当前IT公司用的有哪些微服务架构
①阿里Dubbo/HSF(但是Dubbo已经停止更新5年多了,差不多是2012年就不在维护,因为Dubbo团队解散,
但是2017年阿里又重启了对Dubbo的维护,在这期间给了SpringCloud机会)
②京东JSF
③新浪微博Motan
④当当网Dubbox
........................
c:springCloud是什么?
简单而言:SpringCloud就是分布式微服务架构下的一站式解决方案是各个微服务架构落地技术的集合体,俗称
微服务全家桶。 - SpringCloud和springBoot的关系
二:SpringCloud简单入门实例之聚合父类microservicecloud
- 简介
我们建立的这个microservicecloud是聚合工程的一个父类,它的packageing是pom模式,
这个类主要是用来定义pom.xml文件的,它的作用就是将后面几个子模块公用的jar包等统一
出来,类似一个抽象父类。 - 我们新建一个java Working Set,因为这是个聚合项目,我们将这些模块放到一个Working Set下
- 创建一个microservicecloud父类工程
new -> maven project -> Packaging选择pom模式
- pom.xml内容
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.topcheer</groupId> <artifactId>microservicecloud</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <properties> <!--项目的编码定义UTF-8 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--设置java编码指定JDK1.8 --> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <junit.version>4.12</junit.version> <log4j.version>1.2.17</log4j.version> <lombok.version>1.16.18</lombok.version> </properties> <!--注意:我们在父类的工程里面才使用 dependencyManagement,这是父类工程的一种管理机制--> <dependencyManagement> <dependencies> <!--引入spring-cloud版本是Dalston.SR1--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR1</version> <type>pom</type> <scope>import</scope> </dependency> <!--引入spring-boot版本是1.5.9--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.4</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.31</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> </dependencies> </dependencyManagement> </project>
三:SpringCloud简单入门实例之聚合子模块microservicecloud-API
- 选中父类新建一个子模块
- 修改子模块microservicecloud-api的pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!--这个就是我们继承的父类信息 --> <parent> <groupId>com.topcheer</groupId> <artifactId>microservicecloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <!--下面的是当前子模块Module的名称 --> <artifactId>microservicecloud-api</artifactId> <!--添加当前模块自己需要的jar包,如果父类已经包含,就不需要添加版本号 --> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> </project>
-
新建Entity且配合lombok使用
-
运行mvn clean install,后面其他的模块可以使用,达到通用的目的,不用每个模块都定义这样一个实体类
四:SpringCloud聚合子模块之microservicecloud-provider-dept-8001
- 老规矩,选中父类,右击new->other->Maven Module
父类的变化
- 修改microservicecloud-provider-dept-8001对应的pom.xml信息
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.topcheer</groupId> <artifactId>microservicecloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>microservicecloud-provider-dept-8001</artifactId> <dependencies> <!--这里我们引入自己自定义的api通用包,就可以使用Dept部门实体 --> <dependency> <groupId>com.topcheer</groupId> <artifactId>microservicecloud-api</artifactId> <!--maven有一个内置属性${project.version}表示的是项目的版本号 --> <version>${project.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!--修改后立即热部署 --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies> </project>
- 配置microservicecloud-provider-dept-8001对应的application.yml信息
server: port: 8001 #设置端口为8001 mybatis: config-location: classpath:mybatis/mybatis.cfg.xml #设置mybatis配置文件所在的路径 type-aliases-package: com.topcheer.springcloud.entities #扫描所有实体类所在包 mapper-locations: - classpath:mybatis/mapper/**/*.xml #扫描mybatis的映射文件 spring: application: name: microservicecloud-dept datasource: type: com.alibaba.druid.pool.DruidDataSource #设置当前数据源 driver-class-name: org.gjt.mm.mysql.Driver #设置mysql驱动包 url: jdbc:mysql://localhost:3306/cloudDB01 #设置数据库名称 username: root password: 897570 dbcp2: min-idle: 5 #设置数据库连接池的最小维持连接数 initial-size: 5 #设置初始化链接数 max-total: 5 #设置最大连接数 max-wait-millis: 200 #设置链接获取的最大超时时间
- 配置microservicecloud-provider-dept-8001对应的mybatis.cfg.xml信息
-
创建对应的数据库以及表
-
创建部门的dao层接口
-
创建DeptMapper.xml文件
8:创建service层
9:创建controller层
10:创建microservicecloud-provider-dept-8001项目的启动类
11:启动项目并且测试效果(出现下面效果,说明这个子模块成功完成)