Spring Cloud小Demo初步搭建
主要是参考了一下两篇文章搭建的,第一篇文章的步骤较为详细但是pom.xml和启动类的方法调用有些问题而采用的第二篇文章的pom.xml和启动类方法,详细的以后再补充
Spring Cloud 基本项目搭建步骤
Spring Cloud 服务注册发现实现原理 如图
A、B、C、三个服务将项目注册到注册中心去,注册中心会不定时的检测每个项目的是否正常运行或者被注册。
第一步:我们先创建注册中心
首先先创建一个Spring-Boot 应用【本项目采用esclpilse+maven开发】
先创建一个Maven-Project root父类便于版本控制【当然也可以直接创建】
编写POM文件添加Spring-Cloud基本应用包
//
<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.qsf.springcloud</groupId>
<artifactId>springcloud-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
<spring-boot.version>2.1.6.RELEASE</spring-boot.version>
<gson.version>2.6</gson.version>
</properties>
<!-- spring-cloud所有项目依赖包 -->
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- 必须引入gson 2.6版的替换2.2版的,不然会报错不兼容 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<modules>
<module>springcloud-eureka</module>
<module>springcloud-common</module>
</modules>
</project>
//
添加注册中心启动类以及配置Spring-Boot 配置.application.yml文件
//
package com;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class RegisterMain {
public static void main(String[] args) {
SpringApplication.run(RegisterMain.class, args);
}
}
//
application.yml
//
server:
port: 8888
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
//
访问 localhost:8888
如果出现这个页面的话 就表示注册中心已经完成了
第二步 创建服务注册到注册中心
创建一个maven module 项目
配置spring-demo-A 项目 pom文件
添加注册启动类以及配置Spring-Boot 配置.application.yml文件
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.qsf.springcloud</groupId>
<artifactId>springcloud-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springcloud-common</artifactId>
<!-- 添加依赖的包文件 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
//
AppMain.java
//
package com;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient //Eureka Client
public class AppMain {
public static void main(String[] args) {
SpringApplication.run(AppMain.class, args);
}
}
//
application.yml
//
server:
port: 8001
spring:
application:
name: spring-cloud-common
#注册中心指向start
eureka:
instance:
instance-id: spring-cloud-common
appname: ${spring.application.name}
client:
service-url:
defaultZone: http://127.0.0.1:8888/eureka/
#注册中心指向end
//
PS:需要注意的defaultZone 我是在本地测试因此需要启动先启动之前的注册中心保证注册中心是可用的。
启动run-as->AppMain.java
再次访问:注册中心的访问地址 localhost:8888
大家会发现 有一个服务被注册到改改注册中心上。但是这会有一个问就是所有的其他人的服务也可以注册到我们这里 这样怎么如何解决这问题呢?就在注册中心配置一个密码就可以实现此功能。
注册中心密码配置
首先需要在pom.xml引用 Spring-Could的官方包。
//
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
//
application.yml 文件配置
//
server:
port: 8888
security:
basic:
enable: true
user:
name: admin
password: 1qaz2wsx
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${security.user.name}:${security.user.password}@${eureka.instance.hostname}:${server.port}/eureka/
//
启动就好了
以上全都运行正常,下面一布就报错了,不知道什么原因
其他服务如果需要注册的时候需要怎么办呢? 其实很简单加入指向就行
//
server:
port: 8001
spring:
application:
name: spring-cloud-common
#注册中心指向start
eureka:
instance:
instance-id: spring-cloud-common
appname: ${spring.application.name}
client:
service-url:
defaultZone: http://admin:1qaz2wsx@127.0.0.1:8888/eureka/
#注册中心指向end
//
另一篇文章(可以不看,因为配置文件和启动类在前面全都改正确了)
一.创建springcloud-root pom项目
新建maven工程,作为父工程
设置pom工程的信息
修改pom文件
//以下内容为重点内容
<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.dongjin.springcloud</groupId>
<artifactId>springcloud-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
<spring-boot.version>2.1.6.RELEASE</spring-boot.version>
<gson.version>2.6</gson.version>
</properties>
<!-- spring-cloud所有项目依赖包 -->
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- 必须引入gson 2.6版的替换2.2版的,不然会报错不兼容 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
//以上内容为重点内容
二.创建springcloud-eureka jar项目
创建maven module项目,作为springcloud-root的子模块
修改pom文件
//以下内容为重点内容
<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.dongjin.springcloud</groupId>
<artifactId>springcloud-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springcloud-eureka</artifactId>
<!-- 添加注册中心依赖的包文件 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
//以上内容为重点内容
springboot的启动程序EurekaApplication.java
//以下内容为重点内容
package com.dongjin.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
//以上内容为重点内容
在resources目录下追加application.yml
//以下内容为重点内容
server:
port: 8888
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:8888/eureka/
//以上内容为重点内容
用run as运行EurekaApplication.java程序后,访问http://localhost:8888/,看到以下页面,证明eureka注册中心启动成功
第一篇文章:
https://blog.csdn.net/o_darling/article/details/82021616
第二篇文章:
https://blog.csdn.net/yhj_911/article/details/102535951