微服务-SpringCloud入门项目搭建

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版权协议,转载请附上原文出处链接和本声明。