You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.0如何避免实体类端点被暴露?

解决Spring Boot 3.0升级后实体类CRUD端点暴露问题

问题根源

你碰到的实体类(比如Customer)能通过/customerEntities/7308这类URL直接访问CRUD操作,本质是Spring Data REST自动为实体生成了REST端点——springdoc的配置只控制Swagger文档的显示,根本不影响实际端点是否存在,所以光配置springdoc没用。

解决方案

下面是几种彻底消除这些实体端点的方法,按需选择:

方法1:全局关闭Spring Data REST自动配置

如果项目完全不需要Spring Data REST的自动生成功能,直接在启动类排除对应的自动配置类:

@SpringBootApplication(exclude = {SpringDataRestAutoConfiguration.class, RepositoryRestMvcAutoConfiguration.class})
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

方法2:禁用单个实体的REST暴露

如果只是不想暴露某几个实体,在对应的实体类上加@RepositoryRestResource(exported = false)注解:

import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@Entity
@RepositoryRestResource(exported = false)
public class Customer {
    // 你的实体字段和方法
}

方法3:通过配置文件全局禁用

在application.yml里添加配置,直接关闭Spring Data REST的端点生成:

spring:
  data:
    rest:
      enabled: false

或者如果需要更精细控制(比如只暴露标注过特定注解的实体):

spring:
  data:
    rest:
      detection-strategy: annotated

方法4:移除Spring Data REST依赖

如果项目里不需要这个功能,检查pom.xml是否引入了spring-boot-starter-data-rest,直接删掉这个依赖就行:

<!-- 若存在该依赖,删除 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>

验证

修改配置后重启服务,再访问http://localhost:8093/customerEntities/7308,返回404就说明端点已经被彻底移除了。

内容的提问来源于stack exchange,提问作者Mirlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:37:40