2016-10-28 6 views
0

RESTFul APIのURLには複数のHttpSecurityインスタンスがあります。これらのインスタンスは/ api /で始まり、フォームベースのログイン用に1つあります。私はまた、正常な要求のための2つのディスパッチャー1と残りのAPIコールのための他のものを持っています。しかし、私は2つ必要ですか?複数のディスパッチャサーブレットを使用した複数のHttpSecurity

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

マイRESTコントローラー

@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/cm/dealer/findByDealerStatus 
/cm/dealer/findByDealerStatus 

は、私が唯一のデフォルトのディスパッチャを持っていると@RequestMapping(「/ API /センチ/ディーラー」)に私のRESTコントローラに注釈を付けるべき//APIを使用して1からアクセスするだけしたいが正しいということです方法?それを行う正しい方法は何か。

答えて

0

2つの別々のサーブレットを追加する必要があります。現在、1つのディスパッチャーサーブレット2パスマッピングがマップされています。

が、これは/ CM /ディーラー/ findByDealerStatusへの呼び出しが私のRESTコントローラに許可されていないことを確認してい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

を拡張しますか? – Mukun

関連する問題