2016-10-28 2 views
0

У меня есть несколько экземпляров HttpSecurity для RESTFul api URL, которые начинаются с/api/и одного для входа в форму. У меня также есть 2 диспетчера для обычного запроса и другие для вызова API для отдыха. Но нужны ли мне два?Spring Multiple HttpSecurity с несколькими сервлетами диспетчера

@Bean 
    public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) { 
     ServletRegistrationBean registration = new ServletRegistrationBean(dispatcherServlet); 
     registration.addUrlMappings("/api/*", "/"); 
     return registration; 
    } 

Мои ОСТАЛЬНЫЕ Контроллер

@RestController 
@RequestMapping("/cm/dealer") 
public class DealerController { 
    @Autowired 
    DealerMgmt dealerMgmt; 

    @RequestMapping(value = "/findByDealerStatus", method = RequestMethod.GET) 
    public Page<Dealer> findByDealerStatus(@RequestParam int page, @RequestParam("dealerStatus") String dealerStatus) {   
     Page<Dealer> dealers = dealerMgmt.isEditable(dealerMgmt.findByDealerStatus(page, dealerStatus)); 
     return dealers; 
    } 
} 

Но этот контроллер REST доступен на обоих диспетчеру. Но я хочу только, чтобы быть доступным по одному с/API/

/api/cm/dealer/findByDealerStatus 
/cm/dealer/findByDealerStatus 

Если у меня есть только один диспетчер по умолчанию и аннотирования мой контроллер REST для @RequestMapping («/ API/см/дилер») является то, что правильно путь ? или что это правильный способ сделать это.

ответ

0

Вам нужно будет добавить два отдельных сервлета, прямо сейчас вы отобразили одно сопоставление маршрутов сервлетов диспетчера сервлетов.

Продлить AbstractAnnotationConfigDispatcherServletInitializer

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException 

    .. 

    ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
    "dispatcher", 
    new DispatcherServlet(dispatcherContext)); 
    dispatcher.setLoadOnStartup(1); 
    dispatcher.addMapping("/"); 

    ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
    "apidispatcher", 
    new DispatcherServlet(dispatcherContext)); 
    dispatcher.setLoadOnStartup(1); 
    dispatcher.addMapping("/api"); 

// 
} 

} 

или

@Bean 
    public ServletRegistrationBean apiDispather() { 
     DispatcherServlet dispatcherServlet = new DispatcherServlet(); 

     AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext(); 
     applicationContext.register(ResourceConfig.class); 
     dispatcherServlet.setApplicationContext(applicationContext); 

     ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(dispatcherServlet, "/api/"); 
     servletRegistrationBean.setName("apiDispather"); 
     return servletRegistrationBean; 
    } 

@Bean 
    public ServletRegistrationBean dispather() { 
     DispatcherServlet dispatcherServlet = new DispatcherServlet(); 

     AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext(); 
     applicationContext.register(WebConfig.class); 
     dispatcherServlet.setApplicationContext(applicationContext); 

     ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(dispatcherServlet, "/"); 
     servletRegistrationBean.setName("dispather"); 
     return servletRegistrationBean; 
    } 
+0

Гарантирует ли это вызов/см/дилер/findByDealerStatus не допускается для моего контроллера REST? – Mukun