第一章:简单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>
    
    <!-- maven仓库地址,在maven安装目录下的:/lib/maven-model-builder-${version}.jar中
		 打开该文件,能找到超级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;

/**
 * 服务注册中心
 * 地址: http://localhost:8761/eureka/
 * 注意事项: 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********************");
	}

}

项目结构图如下:


运行EurekaServerApplication.java文件,在浏览器地址输入: http://localhost:8761访问,界面如下:



源码下载地址: https://gitee.com/ouyangjun_xm/springcloud/attach_files下chapter-one.rar压缩包

                      码云账户: [email protected]     密码: [email protected]

                      请勿恶意操作,谢谢!

本文说明:该文章属于原创,如需转载,请标明文章转载来源

猜你喜欢

转载自blog.csdn.net/p812438109/article/details/80957326