- 0 背景
- 1 创建项目
- 2 创建微服务
- 附录
- 父项目的pom.xml
- 子pom.xml
本文只是为了给想体验Spring Cloud微服务项目的同学快速上手的一个玩具项目(本人也并非专业的Java网页开发,也只是想花很短的时间体验一下微服务),目的只有一个体验一下Spring Cloud。这里首先创建一个简单Sprong Boot项目,下一期再进行微服务的操作,例如服务注册、负载均衡、容错保护(服务降级、服务熔断、请求缓存、请求合并、依赖隔离)等。
如果想系统的学习,可以根据相关的书籍进行学习。
1 创建项目由于一个微服务项目中包含着很多子项目,这里首先建立一个大的父项目,然后再在父项目下创建其余的子项目。
这里开始创建父项目:
- 1,新建一个Spring Initializr项目(如果觉得国外的服务器(Server URL)网址慢,可以换成国内的),根据自己情况填写Name(项目名称)、Group(项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构)、Artifact(项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称、Package name(包名)、Project SDD(项目的Software Development Kit)、Java(Java版本);
- 2,选择SPring Boot的版本,然后选择相关的依赖(这里未进行任何依赖的选择,后面.pom文件中可以配置);
- 3,创建完成后,删除其余的文件,只保留如下面第二张图的结构;
- 4,更改maven仓库配置,设置自己的Mavne home path(maven版本),Local resposity仓库,Use setting file配置文件,然后点击Application,再点击Save;
然后再设置pom.xml自动更新,勾选Any Changes;
- 5,配置父pom.xml(完整配置见附录);
添加父模块:
org.springframework.boot spring-boot-starter-parent 2.1.13.RELEASE
项目信息(packaging不添加,会报错'packaging' with value 'jar' is invalid):
com.jk SpringCloudTest2 1.0-SNAPSHOT SpringCloudTest2 pom SpringCloudTest2
添加指定版本的说明:
UTF-8 UTF-8 1.8 0.8.3
添加相关依赖(这里多了一个jacoco,用于单元测试):
org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.jacoco jacoco-maven-plugin 0.8.3
添加构建说明(这里主要都是jacoco的构建):
org.jacoco jacoco-maven-plugin ${jacoco.version} ** @RestController @RequestMapping(value = "/student") public class StudentController { @GetMapping(value = "/detail") public Object getStudent () throws InterruptedException { //模拟超时(用于显示熔断器Hystrix的作用) // TimeUnit.SECONDS.sleep(6); StudentEntity student = new StudentEntity(); student.setName("张三"); student.setAge(18); student.setRemark(""); return student; } @GetMapping(value = "/detail2/{var}") public Object getStudent2(@PathVariable String var) throws InterruptedException{ StudentEntity student = new StudentEntity(); student.setName("张三"); student.setAge(18); if (StringUtils.isNotEmpty(var) ){ student.setRemark(var); }else { student.setRemark(""); } return student; } }
-
7,编写应用网页端口和ip,文件如下的路径,把application.properities改为application.yml(properities的优先级高,yml的文件编码风格更好);
-
7,编写单元测试用例,路径如下图(如果进行测试,可以删除test文件夹);
编写如下代码:
package com.jk.cloud1;
import com.jk.cloud1.controller.StudentController;
import com.jk.cloud1.StudentControllerTest;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Cloud1Application.class)
public class StudentControllerTest {
@Resource
StudentController studentController;
@Test
public void test() throws InterruptedException {
studentController.getStudent2("handsome");
}
}
- 8,运行启动应用(Cloud1Application.java);
- 9,访问接口对应的网页;
至此spring cloud的项目可以说已经小小的体验了一把。
附录 父项目的pom.xml子pom.xml4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.13.RELEASE cloud-1 com.jk SpringCloudTest2 1.0-SNAPSHOT SpringCloudTest2 pom SpringCloudTest2 UTF-8 UTF-8 1.8 0.8.3 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.jacoco jacoco-maven-plugin 0.8.3 org.jacoco jacoco-maven-plugin ${jacoco.version} **/* SpringCloudTest/cloud-jk-1/target/jacoco.exec BUNDLE METHOD COVEREDRATIO 0.50 BRANCH COVEREDRATIO 0.50 CLASS MISSEDCOUNT 0 pre-test prepare-agent post-test test report org.springframework.boot spring-boot-maven-plugin
4.0.0 SpringCloudTest2 com.jk 1.0-SNAPSHOT cloud-1 cloud-1 cloud-1 1.8 UTF-8 UTF-8 Greenwich.SR5 commons-lang commons-lang 2.6 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-websocket org.projectlombok lombok true org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok



