1、Eureka-Server部分
(1)pom.xml
<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>Finchley.SR1</spring-cloud.version>
</properties>
<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>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<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-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
</dependencies>
(2) application.yml
spring:
application:
name: eureka-server
security:
user:
name: user
password: password
server:
port: 8761
eureka:
instance:
#eureka服务端配置
prefer-ip-address: false
# 不使用主机名来定义注册中心的地址,而使用IP地址的形式
status-page-url-path: /actuator/info
# 获取此实例状态页的URL路径,然后构造出主机名,安全端口等,默认为/info
health-check-url-path: /actuator/health
# 获取此实例的相对健康检查URL路径,默认为/health
client:
#eureka客户端配置
register-with-eureka: false
# 实例是否在eureka服务器上注册自己的信息以供其他服务发现,默认为true
fetch-registry: false
# 此客户端是否获取eureka服务器注册表上的注册信息,默认为true
service-url:
# 指定服务注册中心的地址
defaultZone: http://user:password@localhost:8761/eureka/
#
#logging:
# level:
# org:
# springframework:
# security: DEBUG
这部分的secrity是EurekaServerd的身份认证部分
(3)启动类
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
@EnableWebSecurity
static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().ignoringAntMatchers("/eureka/**");
super.configure(http);
}
}
}
添加WebSecurityConfig 这段代码主要是,本版本的SpringCloud它默认启动了CSRF 这个东西,如果我们不禁用它,那么我们的url就会是错误的
2、Eureka-Client-ConfigServer
(1)pom.xml
<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>Finchley.SR1</spring-cloud.version>
</properties>
<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>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
(2)application.yml
server:
port: 8080
spring:
cloud:
config:
server:
git:
uri: git@github.com:wangchunself/ymlforconfig.git
application:
name: eureka-client-configserver
security:
user:
name: user
password: password
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://user:password@localhost:8761/eureka
healthcheck:
enabled: true
这块的security就是配置ConfigServer的身份认证的
(3)启动类
@EnableConfigServer
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaConfigServerApplication.class, args);
}
}
3、Eureka-Client-ConfigClient
(1)pom.xml
<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>Finchley.SR1</spring-cloud.version>
</properties>
<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>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<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>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
(2)bootstrap.yml(必须写在bootastrap.yml中,如果写在application.yml中,它读取不到)
spring:
cloud:
config:
discovery:
enabled: true #这块表示启用service-id不用uri
service-id: eureka-client-configserver #这块是服务的id
label: master
profile: bar
username: user #这块是验证configclient身份用的
password: password
application:
name: eureka-client-configclient
server:
port: 8081
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://user:password@localhost:8761/eureka
logging:
level:
org:
springframework:
security: DEBUG
(3)启动类
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaConfigClientApplication.class, args);
}
}
(4)调用类
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaConfigClientApplication.class, args);
}
}
4、测试
结果正确