第一章:简单springcloud微服务项目,Eureka Server服务注册中心搭建
spring cloud简介
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
开发工具: eclipse 、Jdk: 1.8 、maven: apache-maven-3.3.9
开始创建第一个springcloud maven项目,项目名称xm-web-server
步骤一:New-Project-Maven Project
步骤二:基本maven项目格式,如不勾选Create a simple project(skip archetype selection),需自行选择类型
步骤三:项目基本配置
步骤四:xm-web-server项目结构图
步骤五:在xm-web-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>
<groupId>com.maven.xm</groupId>
<artifactId>xm-web-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 1、默认使用Java 8
2、使用UTF-8编码
3、一个引用管理的功能,在dependencies里的部分配置可以不用填写version信息,这些version信息会从spring-boot-dependencies里得到继承。
4、能够识别application.properties和application.yml类型的文件,同时也能支持profile-specific类型的文件(如:application-foo.properties and application-foo.yml,这个功能可以更好的配置不同生产环境下的配置文件)。
5、识别插件的配置(Sensible plugin configuration (exec plugin, surefire, Git commit ID, shade).)
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<!-- properties声明一些公共配置,该节点配置了自定义属性即可在任意地方使用,通过${}访问,形式如${java.version} -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring.cloud.dependencies.version>Camden.SR7</spring.cloud.dependencies.version>
<io.springfox>2.7.0</io.springfox>
</properties>
<!-- dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器 -->
<!--
说明1:如果dependencies里的dependency自己没有声明version元素,那么maven就会倒dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,
如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version
说明2:如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。
-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 一种<build>被称为Project Build,即是<project>的直接子元素。另一种<build>被称为Profile Build,即是<profile>的直接子元素。-->
<build>
<!--
<plugins>给出构建过程中所用到的插件
extensions,是否加载该插件的扩展,默认false
inherited,该插件的configuration中的配置是否可以被(继承该POM的其他Maven项目)继承,默认true
configuration,该插件所需要的特殊配置,在父子项目之间可以覆盖或合并
dependencies,该插件所特有的依赖类库
executions,该插件的某个goal(一个插件中可能包含多个goal)的执行方式。一个execution有如下设置:
id,唯一标识
goals,要执行的插件的goal(可以有多个),如<goal>run</goal>
phase,插件的goal要嵌入到Maven的phase中执行,如verify
inherited,该execution是否可被子项目继承
configuration,该execution的其他配置参数
-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
打开该文件,能找到超级POM:\org\apache\maven\model\pom-4.0.0.xml ,它是所有Maven POM的父POM,所有Maven项目继承该配置,你可以在这个POM中发现如下配置
-->
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<modules>
<module>eureka-server</module>
</modules>
</project>
步骤六:创建一个Maven Module项目,项目名称叫eureka-server,作为服务注册中心
步骤七:
步骤八:
步骤九: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>com.maven.xm</groupId>
<artifactId>xm-web-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>eureka-server</artifactId>
<!-- 新建项目没有该packaging配置,可手动添加 -->
<packaging>jar</packaging>
<!-- dependencies引入具体jar -->
<dependencies>
<!--eureka server 服务注册中心jar-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<!-- maven打包插件,在cmd命令窗口执行,如: mvn install -U -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
在eureka-server项目src/main/resources下新建application.yml文件,配置如下:
# 注册中心的端口号
server:
port: 8761
eureka:
instance:
# 地址
hostname: localhost
client:
# 表示是否将自己注册到Eureka Server中,默认为true, 由于当前应用就是 Eureka Server, 故而设置为false
registerWithEureka: false
# 表示是否从 Eureka Server中获取注册信息, 默认为true, 因为这是一个单点的 Eureka Server, 不需要同步其它的 Eureka Server 节点的数据, 故而设置为 false
fetchRegistry: false
serviceUrl:
# 设置与Eureka Server交互的地址, 查询服务和注册服务都需要依赖这个地址. 默认http://localhost:8761/eureka; 多个地址可以使用","分隔
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
在eureka-server项目创建EurekaServerApplication.java文件,内容如下:
package com.maven.xm.server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
* 服务注册中心
* 注意事项: EurekaServerApplication.java一定要在com.maven.xm包或者子包下,不然扫描不到
* @author ouyangjun
*
* @SpringBootApplication 是 @Configuration、@EnableAutoConfiguration、@ComponentScan注解简化
* @EnableEurekaServer 该注解表明应用为eureka服务,有可以联合多个服务作为集群,对外提供服务注册以及发现功能
*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
private static final Logger LOGGER = LoggerFactory.getLogger(EurekaServerApplication.class);
public static void main(String[] args) {
// Spring Boot的SpringApplication类,用以启动一个Spring应用,实质上是为Spring应用创建并初始化Spring上下文。
SpringApplication.run(EurekaServerApplication.class);
LOGGER.info("********************Eureka Server Started********************");
}
}
项目结构图如下:
更多敬请关注:
1.
2.
3.
4.
5.
6.