springcloud:https://blog.csdn.net/qq_52681418/article/details/113247805
微服务-SpringCloud入门项目搭建
了解微服务应该知道,应用是由多个服务共同组成的,一个服务可以视作一个独立的项目。
在入门项目中,先创建一个正常的父项目,只保留父项目pom.xml文件(其它的都能删除),然后在父项目下面创建模块,一个模块即一个服务。
1.创建父项目
引入父项目依赖:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> </parent> <properties><!--编码、jdk版本--> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency><!-- 包含了相关依赖包:spring-webmvc、tomcat、jdbc等 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency><!--配置springCloud--> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR1</version><!--springboot2.2.2+springcloud Hoxton.SR1--> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
依赖说明:
dependencyManagement:声明子项目依赖的版本,不实际引入依赖。
dependencies:引入依赖,子项目继承这里的依赖。
本次使用的其它依赖如下:
<dependency><!--单元测试--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency><!--插件:省略get、set方法--> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> <scope>provided</scope> </dependency>
当然,有时我们会使用alibaba的组件,如sentinel,此时我们需要添加额外配置:
<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
添加以上配置,就能正常使用阿里的组件了。
2.创建微服务模块
模块,即服务,可以被调用,也可以调用其它服务。在常规的springboot服务中,调用一个接口,使用url来访问就行了,在springcloud中一个服务调用另一个服务,也可以使用这种方式来实现。
创建一个模块,向一般springboot一样编辑它,然后配置服务信息:
server: port: 9091 #服务端口号 spring: application: name: img-service #服务名
可以通过这种方式,来创建多个功能单一的微服务,同一台主机上端口号注意不要冲突。
3.模块之间的调用
在不需要其它依赖的情况下,可以直接使用http协议进行服务调用,需要用到RestTemplate对象。
启动器注入RestTemplat:@SpringBootApplication public class MainApplication { @Bean//将RestTemplate注册到容器 public RestTemplate RestTemplate(){ return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(MainApplication.class,args); } }
一般情况下,控制层方法来处理用户请求,因此在这里进行服务调用:
@Autowired//注入RestTemplate private RestTemplate rt; @RequestMapping("/img/{id}") public Img findimg(@PathVariable long id){//地址硬编码,不方便 ,因此需要服务注册中心 //调用图片服务(需启动图片服务) Img img=rt.getForObject("http://localhost:9092/img/findimg/"+id,Img.class); return img; }
版权声明:本文为qq_52681418原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。