正经学徒,佛系记录,不搞事情

参考上文:https://blog.csdn.net/qq_31748587/article/details/84849520

基于maven多模块构建springcloud项目实现简单的服务注册发现,项目最终结构如下:

cloud_parent:父工程,统一管理jar包依赖

eureka_server:注册中心服务

eureka_client:服务提供者

eureka_feign:服务消费者

第一步:创建一个空项目

第二步:创建父工程module

仅保留pom.xml和.iml文件,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>1.5.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.mn</groupId>
	<artifactId>cloud_parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<!--父工程一定要加-->
	<packaging>pom</packaging>
	<name>cloud_parent</name>
	<description>Demo project for Spring Boot</description>
	<!--子项目-->
	<modules>
		<module>eureka_server</module>
		<module>eureka_cilent</module>
		<module>eureka_feign</module>
	</modules>

	<!--统一管理版本-->
	<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.version>Dalston.RELEASE</spring-cloud.version>
	</properties>
	<!--添加依赖,子项目无需再次添加-->
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<!--控制springcloud个组件版本-->
	<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_server

右键父工程

创建springboot项目

注意项目的路径,存放在父工程内

pom文件只需保留parent,因为需要的jar包在父工程中

<?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>
		<artifactId>cloud_parent</artifactId>
		<groupId>com.mn</groupId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>eureka_server</artifactId>

	<dependencies>
	</dependencies>
</project>

修改application.properties文件

spring.application.name=eureka-server
server.port=1001
eureka.instance.hostname=localhost
#表示是否将自己注册到Eureka Server,默认为true
eureka.client.register-with-eureka=false
#表示是否从Eureka Server获取注册信息,默认为true
eureka.client.fetch-registry=false

启动类追加注解

@EnableEurekaServer

第四步:创建服务提供者eureka_client

eureka_server项目流程

修改配置文件application.properties

spring.application.name=eureka-client
server.port=1002
eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

添加TestController

@RestController
public class TestController {
    @GetMapping("/get")
    public String get() {
        return "试试看可不可以";
    }
}

启动类删除@EnableEurekaServer,添加注解

@EnableDiscoveryClient

第五步:创建服务消费者eureka_feign

eureka_client项目流程

因为用到feign,因此pom.xml文件追加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

修改配置文件application.properties

spring.application.name=eureka-feign
server.port=1003
eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

启动类添加注解

@EnableFeignClients
@EnableDiscoveryClient

添加接口类TestInterface,name与服务名相同(注:服务名不能带有下划线)

@FeignClient(name= "eureka-client")
public interface TestInterface {
    @GetMapping(value = "/get")
    String get();
}

添加控制类TestController

@RestController
public class TestController {
    @Autowired
    TestInterface testInterface;

    @GetMapping("/getByFeign")
    public String get() {
        return testInterface.get();
    }
}

第六步:测试

依次启动 eureka_server,eureka_client,eureka_feign

浏览器访问:http://127.0.0.1:1001/表明注册中心成功启动

浏览器访问:http://127.0.0.1:1002/get 表明服务提供者启动正常

浏览器访问:http://127.0.0.1:1003/getByFeign 表明服务消费者启动正常

本文只是作为一个引子,入门如何使用maven多模块来搭建微服务,实际项目中,项目可以根据业务需求,按业务拆分或者代码分层,或者二者结合使用,还请举一反三。

项目地址:

https://pan.baidu.com/s/1FZ9M48sY8xbb41WwP4G1Bg 提取码: eacf

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐