共计 6055 个字符,预计需要花费 16 分钟才能阅读完成。
发现很多招聘都需要会 springcloud,所以最近在学习 springcloud。
必须要从零开始用 IDEA 搭建一下这个 springcloud 框架,本文是采用 Eureka 作为服务注册与发现的组件。
- 先用 IDEA 创建一个 MAVEN 项目。
下一步需要填写 GroupId 和 ArtifactId,这里按照自己的习惯去填写就好了。
下一步选择项目位置和项目名称点击完成就可以了。
- 在该 MAVEN 项目下新建一个模块,这里就需要新建的是 springboot 了。
这里选择的是 spring initializr 进行 springboot 的创建。
还是要对 Group 和 Artifact 进行设置。
点击下一步之后,我们需要选择 Cloud Discovery 下的 Eureka Server,点击下一步然后点击完成就可以了。
-
现在我们需要对服务中心 eureka-server 进行一些相关的配置了。
打开它的 pom.xml 文件,我们看到是这样的:<?xml version="1.0" encoding="UTF-8"?> <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>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.zhouxiaoxi</groupId> <artifactId>eureka-server</artifactId> <version>0.0.1-SNAPSHOT</version> <name>eureka-server</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
然后我们需要启动一个服务注册中心,这需要在 springboot 工程的启动 application 类上加一个注解 @EnableEurekaServer:
package com.zhouxiaoxi.eurekaserver; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args); } }
先将配置文件改为 yml,然后进行相关的配置,如下:
# 端口号 server: port: 8080 eureka: instance: hostname: localhost client: #服务注册中心也会将自己作为客户端来尝试注册自己, 为 true(默认)时自动生效。registerWithEureka: false #检索服务选项,当设置为 True(默认值) 时,会进行服务检索, 注册中心不负责检索服务。fetchRegistry: false #是一个默认的注册中心地址。配置该选项后,可以在服务中心进行注册。serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ spring: application: name: eurka-server
- 配置完成之后,启动项目,然后浏览器地址栏输入 http://localhost:8080 然后出现以下页面,表示注册中心搭建完毕。
- 接下来我们就需要创建一个服务提供者 (eureka-client)
还是和上面一样新建一个模块,这次我们命名为 eureka-client,然后选择依赖的时候有点区别:
点击下一步知道完成就可以了。 -
核对一下 pom.xml 文件信息:
<?xml version="1.0" encoding="UTF-8"?> <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>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.zhouxiaoxi</groupId> <artifactId>eureka-client</artifactId> <version>0.0.1-SNAPSHOT</version> <name>eureka-client</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
-
我们这边也需要对启动类进行相关的注解添加:
因为我们这边用的是 eureka 搭建的服务中心,所以我们这边还是用 @EnableEurekaClient 注解就可以了package com.zhouxiaoxi.eurekaclient; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient //@EnableDiscoveryClient 注解是基于 spring-cloud-commons 依赖,相当于一个公共的服务发现;//@EnableEurekaClient 注解是基于 spring-cloud-netflix 依赖,只能为 eureka 作用;public class EurekaClientApplication {public static void main(String[] args) {SpringApplication.run(EurekaClientApplication.class, args); } }
-
需要对配置文件进行相关的配置:
server: port: 8081 spring: application: name: eureka-client eureka: client: serviceUrl: #注明自己的服务注册中心的地址 defaultZone: http://localhost:8080/eureka/
-
新建一个 controller,然后写一个 hello 方法:
package com.zhouxiaoxi.eurekaclient.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController {@Value("${server.port}") String port; @RequestMapping("/hello") public String home(@RequestParam(value = "name") String name) {return "hello" + name + ",i am from port:" + port;} }
-
启动该工程之后,打开刚才的浏览器页面刷新后会发现一个服务已经注册在服务中了,服务名为 EUREKA-CLIENT , 端口为 8081:
这时打开 http://localhost:8081/hello?name=world,你会在浏览器上看到 :
hello world ,i am from port:8081
至此,我们的一个较为完整的项目就搭建起来了。
- 不过我们还可以运行多个服务,这里有个小技巧了就:
先打开 IDEA 右上角的编辑配置,如下图:
然后找到我们刚才的工程,将允许并行运行给勾选上,应用并确定就可以了:
找到该工程下的配置文件,将端口号进行修改后启动,就可以并行启动多个服务了:
启动几个我们就会在注册中心的页面上看到几个服务。
恩,先这样吧,后续再更新。。。