spring cloud (一、服务注册demo_eureka)
spring cloud (二、服务注册安全demo_eureka)
创建一个服务提供者注册到服务注册中心,跟前一个案例一样创建一个spring boot 项目 ;
pom文件如下:
<?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.test.provider</groupId>
<artifactId>provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>provider</name>
<description>provider</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<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.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency> </dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR3</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>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
配置文件如下
#应用(服务)名称
spring.application.name=eureka-provider
#端口号
server.port=8762
#注册的账号密码地址
eureka.client.serviceUrl.defaultZone=http://admin:admin@localhost:3333/eureka/
启动类
/**
* 服务提供者
*/
@EnableDiscoveryClient
@SpringBootApplication public class ProviderApplication { public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
到这一步其实已经配置完成了,基本的代码;但是启动会报错,虽然配置了登录的账号和密码;但是由于spring cloud 的一些版本是需要修改注册中心的启动配置
接下来的改动注意,这是是改服务注册管理那边的代码;
我们在spring cloud (一、服务注册demo_eureka) 中加上一个自己的类,加上如下的注解,然后再重新启动即可注册成功
@EnableWebSecurity
public class MyWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
super.configure(http);
} }
这个时候我们先启动服务管理的demo,然后再启动服务提供者;最后登录服务控制台查看;
这个时候我们可以看到服务注册中心多了一个服务;
到这里虽然可以注册成功了。看起来是没有问题了,不过确实有一个问题;
就是你把提供服务这边的demo程序停了,但是服务注册页面却显示还存在;
处理这个问题,我们需要在服务注册的demo中加上自动检测失效的配置;
#启用主动失效,并且每次主动失效检测间隔为10s
eureka.server.eviction-interval-timer-in-ms=10000
eureka.server.enable-self-preservation=false