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.2.6'
}

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

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
	implementation 'org.springframework.boot:spring-boot-starter-security'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

ext {
	set('springCloudVersion', "2023.0.2")
}

dependencyManagement {

	// 导入spring cloud 的mavenBom,可以在https://mvnrepository.com找到最新版本
	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,出现如下页面即成功:


Spring Cloud 1: Gradle+Eureka注册中心_gradle