Я использую защиту Spring boot + Jersey + Spring, я хочу иметь общедоступные и частные конечные точки, я хочу, чтобы схема выглядела следующим образом:
- /rest - мой корневой контекст
- /public. Я хочу разместить мои публичные конечные точки в этом контексте. Он должен быть внутри корневого контекста, например
/rest/public/pings
- /private. Я хочу разместить свои личные конечные точки в этом контексте. Он должен находиться внутри корневого контекста, например
/rest/private/accounts
У меня есть моя конфигурация следующим образом:
Джерси:
@Configuration
@ApplicationPath("/rest")
public class RestConfig extends ResourceConfig {
public RestConfig() {
register(SampleResource.class);
}
}
Spring безопасность:
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
........
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/rest/public/**").permitAll();
http.antMatcher("/rest/**").authorizeRequests().anyRequest().fullyAuthenticated().and().httpBasic();
http.csrf().disable();
}
}
Вопрос в том, как я могу зарегистрировать два пути приложения внутри контекста my/rest, один для /public, а другой для /private?
ПРИМЕЧАНИЕ. Я попытался создать еще один ResourceConfig следующим образом:
@Configuration
@ApplicationPath("/rest/public")
public class RestPublicConfig extends ResourceConfig{
public RestPublicConfig() {
register(PingResource.class);
}
}
Но я получаю следующую ошибку:
No qualifying bean of type [org.glassfish.jersey.server.ResourceConfig] is defined: expected single matching bean but found 2: restConfig,restPublicConfig
Спасибо за вашу помощь:)