rab*_*ens 17 spring spring-mvc spring-data-jpa spring-hateoas spring-boot
我目前正在使用Spring Boot,Hibernate和Spring-HATEOAS构建一个带REST接口的应用程序.我的数据模型定义为带@Entity注释的bean,我使用Spring的功能自动设置Hibernate存储库(创建扩展接口PagingAndSortingRepository).我的应用程序是完全注解驱动的,即无我有,web.xml但一切配置与Spring的注解一样@Configuration,@Bean等等,并开始从我的应用程序main的帮助下方法SpringApplication.run(MyApp.class, args);
这工作正常,但使用这种方法,a RepositoryRestHandlerMapping和EndpointHandlerMapping创建.这些创造了我既不需要也不想要的一堆资源.我实现自己的控制器,因为他们需要做的不仅仅是标准逻辑.
如何防止此默认行为并禁用这些映射?
小智 23
排除主类中的RepositoryRestMvcAutoConfiguration.
@EnableAutoConfiguration(exclude = RepositoryRestMvcAutoConfiguration.class)
我需要其他REST函数,比如@RestController注释.但我现在找到了一个可行的解决方案:
RepositoryRestHandlerMapping不应禁用,但可以通过使用注释来禁用存储库的导出@RepositoryRestResource(exported = false).我使用我的所有存储库执行此操作,现在仍然安装了通配符资源,但没有注册存储库来解决它们,使它们有效地消失.尝试访问此类资源会产生404预期效果.
相同的EndpointHandlerMapping,来自spring-boot-actuator和安装一些端点,如/info,/metrics等.这很方便,应该存在于REST应用程序中; 当我使用Eureka服务器注册我的应用程序时,它会自动生成其中一些的链接.要正确使用此端点,可以通过以下方式配置端点@Bean,如下所示:
@Configuration
public class InfoConfiguration {
    @Bean
    public InfoEndpoint infoEndpoint {
        Map<String, Object> info = ...
        return new InfoEndpoint(info);
    }
}
在info上面的是恒定的信息,如果有信息是随时更改,一个可以覆盖InfoEndpoint和提供的自定义实现getAdditionalInfo().
| 归档时间: | 
 | 
| 查看次数: | 7858 次 | 
| 最近记录: |