SDRのベースパス を「/ api」に設定した@RepositoryRestControllerを使用して、@RepositoryRestResourceの自動生成コントローラメソッドをオーバーライドしたいと考えています。春データRest @RepositoryRestControllerと@RequestMapping
スプリングデータレスト3.0(およびそれ以前)は言う:
「[スニペットに示すように、このコントローラは、他のすべてのRESTfulなエンドポイントによって使用さRepositoryRestConfiguration.setBasePathで定義された同一のAPIのベースパスから提供され(例えば、/ api) " https://docs.spring.io/spring-data/rest/docs/3.0.1.RELEASE/reference/html/#customizing-sdr.overriding-sdr-response-handlers(第15.4章)
このコードスニペットでは、クラスレベルに@RequestMapping
はありません。
マイSDRアプリがRepositoryRestConfigurationオブジェクト
config.setBasePath("/api");
で構成されており、まだ@RepositoryRestController
はSDRの自動生成、コントローラのメソッドをオーバーライドしません。
この投稿への受け入れanswearを検討してください: Spring Data Rest controllers: behaviour and usage of @BasePathAwareController, @RepositoryRestController, @Controller and @RestController
を、私はこのことを理解して助けてください! :)
AppConf.java:
@Configuration
@Import(value = {DataConf.class})
@EnableWebMvc
@ComponentScan(value = "pl.mydomain.controller")
public class AppConf
{
@Bean
public RepositoryRestConfigurer repositoryRestConfigurer() {
return new RepositoryRestConfigurerAdapter() {
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.setBasePath("/api");
}
};
}
}
TokenController.java:
@RepositoryRestController
public class TokenController
{
private TokenRepository repository;
@Autowired
public TokenController(TokenRepository tokenRepository) {
this.repository = tokenRepository;
}
@RequestMapping(method = GET, path = "/tokens")
public @ResponseBody ResponseEntity<?> tokens()
{
return ResponseEntity.ok("Hello");
}
}
TokenRepository.java:
@RepositoryRestResource(path = "tokens")
public interface TokenRepository extends CrudRepository<Token, Long>{
}
あなたは何を達成したいのですが、何が問題になっていますか? –
自動生成されたコントローラメソッドのオーバーライドについては、こちら[https:// stackoverflow]を参照してください。com/questions/36773171/spring-data-rest-override-repository-method-on-the-controller/36790697#36790697)を参照してください。 –
@ marc-tarin、はい、あなたが指摘したトピックは大丈夫ですが、SDRの基本パスを設定するとどうなりますか?物事が変わる...私のコントローラはオートジェントをオーバーライドしません。メソッド。 –