目录
1.eureka-server的注意事项
eureka-server的yml文件中的元素冒号后面要有空格。
instance后面最好有hostname然后才写localhost。可以解决无法识别$的阴间错误。

2.eureka-feign的注意事项
如果eureka-feign报以下错误

大概率是因为没有@SpringBootApplication的注解。加上就可以了。

3.多模块构建feign项目过程
3.1创建父项目
父项目的主要作用是为了统一子模块的pom依赖。然后就没什么用了。
创建一个maven项目作为父项目。

导入公用的pom文件,根据大家的版本自行调整。我这里导入的是eureka-server的pom文件,因为provider和feign的pom都是在eureka-server的pom的基础上添加了一些依赖。
这里因为要用子模块,所以要添加依赖标签<modules>,就是下面图片中带注释的部分,是表明父项目的子模块有那些。这里给出截图:

初始为空就行,当你添加一个子模块就会自动添加。
java
<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 https://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.7.18</version>
<relativePath/>
</parent>
<groupId>com.itheima</groupId>
<artifactId>first</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>first</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
</properties>
<modules>
<!-- <module>eureka-server</module>-->
<!-- <module>eureka-provider</module>-->
<!-- <module>eureka-feign</module>-->
</modules>
<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>2021.0.8</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>
3.2创建子项目eureka-server

选择新建选择模块。创建eureka-server

因为父项目的pom就是eureka-server的pom因此我们不用管eureka-server的pom文件。
然后创建yml和EurekaServerApplication
java
server:
port: 7001
spring:
application:
name: eureka-server //解决无法解析$问题
eureka:
instance:
hostname: localhost
client:
fetch-registry: false
register-with-eureka: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
java
package com.itheima;
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);
}
}
3.3创建子项目eureka-provider


因为eureka-provider的pom比server多,我们要添加2个依赖。添加的依赖不可以和父项目重合(个人认为,因为报错了)。就比如父项目中有:

那么子项目中好像不能用下图,因为我报错了,你们可以试试。

初始为下图:

更改:
java
<?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.itheima</groupId>
<artifactId>first</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>eureka-provider</artifactId>
<dependencies>
<!-- <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-web</artifactId>
<version>2.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.7.RELEASE</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
这里补上yml
java
server:
port: 7006
spring:
application:
name: eureka-provider
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka/
instance:
hostname: localhost
EurekaProviderApplication
java
package com.itheima;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class EurekaProviderApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaProviderApplication.class, args);
}
}
controll...........这里省略
3.4创建子项目eureka-feign

修改pom文件
java
<?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.itheima</groupId>
<artifactId>first</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>eureka-feign</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.7.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.7.RELEASE</version>
</dependency>
</dependencies>
</project>
编写yml,Application,server,controll..........省略。
3.5运行
点击左下角服务,右键Spring Boot就可以挨个运行了。


点击端口号即可跳转。
