Cloud(1) - Eureka注册中心

build.gradle:

plugins {
    id 'java'
    // spring 依赖管理插件
    // https://plugins.gradle.org/plugin/io.spring.dependency-management
    id 'io.spring.dependency-management' version '1.1.0'
    // spring boot系列版本,不需最新,与mavenBom依赖的版本相同就好
    id 'org.springframework.boot' version '3.0.5'

}

group = 'cn.beeson'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security
    implementation 'org.springframework.boot:spring-boot-starter-security'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

ext {
    set('springCloudVersion', "2022.0.2")
}
dependencyManagement {
    // 导入spring cloud 的mavenBom,最新版本2022.0.2
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

tasks.named('test') {
    useJUnitPlatform()
}

application.yml:

server:
  port: 9000
spring:
  security:
    # 浏览器访问注册中心的账号密码
    user:
      name: admin
      password: 123456
  application:
    name: eureka-server
eureka:
  instance:
    hostname: localhost
  client:
    # 不在注册中心的控制面板上显示自己
    registerWithEureka: false
    fetchRegistry: false
    # 其他微服务在注册中心注册的url格式
    serviceUrl:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:${server.port}/eureka/

注意入口类添加@EnableEurekaServer注解↓

package cn.beeson.eurekaserverdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerDemoApplication.class, args);
    }

}

在配置文件里关闭csrf,不然spring security会阻止其他服务向Eureka注册:

package cn.beeson.eurekaserverdemo.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;

import static org.springframework.security.config.Customizer.withDefaults;

@EnableWebSecurity
@Configuration
public class WebSecurityConfig2 {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {

        // 关闭csrf,确保其他服务可以注册
        http.csrf().disable();
        http.authorizeHttpRequests((authz) -> authz
                        .anyRequest().authenticated()
                )
                .httpBasic(withDefaults());
        return http.build();
    }
}

配置完成,启动服务,并访问http://localhost:9000,出现如下页面即成功:

image.png

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容