Về cơ bản tôi muốn chia ứng dụng của mình thành 2 phần. Mỗi phần đều có nội dung bảo mật riêng và sở hữu số @Controller
s. Bạn có thể truy cập @Services
từ cả hai phần.Khởi động mùa xuân với nhiều DispatcherServlet, mỗi bộ phận có @Controllers của riêng mình
Vì vậy, tôi nghĩ, tôi sẽ nhận được 2 DispatcherServlet
. Một người nghe /admin/*
và người thứ hai lắng nghe mọi thứ khác (/
). Mỗi người trong số đó sẽ có AnnotationConfigWebApplicationContext
riêng của mình để tôi có thể quét riêng thành phần cho số @Controller
s.
Và bởi vì mùa xuân Boot cung cấp một DispatcherServlet
nghe trên /
ra khỏi hộp, tôi nghĩ, tôi có thể chỉ cần thêm một giây một:
@Configuration
public class MyConfig {
@Bean(name="myDS")
public DispatcherServlet myDS(ApplicationContext applicationContext) {
AnnotationConfigWebApplicationContext webContext = new AnnotationConfigWebApplicationContext();
webContext.setParent(applicationContext);
webContext.register(MyConfig2.class);
// webContext.refresh();
return new DispatcherServlet(webContext);
}
@Bean
public ServletRegistrationBean mySRB(@Qualifier("myDS") DispatcherServlet dispatcherServlet) {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(dispatcherServlet);
servletRegistrationBean.addUrlMappings("/admin/*");
servletRegistrationBean.setName("adminServlet");
return servletRegistrationBean;
}
}
Các MyConfig2
lớp, chỉ có @Configuration
và @ComponentScan
. Trong cùng một gói là @Controller
.
Khi khởi động ứng dụng, tôi có thể thấy, bản đồ servlet thứ hai đang được đăng ký, nhưng @Controller
thì không. Ngoài ra, tôi hiện có thể truy cập tất cả@Controllers
từ /
và/admin
.
Bất kỳ ý tưởng nào tôi có thể làm việc này?
Cảm ơn bạn đã trả lời. Thực sự hữu ích. Tôi có thêm một thách thức để vượt qua. Làm thế nào tôi có thể xác thực + ủy quyền (dựa trên DB) các điểm cuối/foo nhưng chỉ xác thực các điểm cuối/thanh? Tôi có một cấu hình từ đây [0]. http://stackoverflow.com/questions/36909226/how-to-configure-waffle-in-spring-using-java-configuration – JHS
Cảm ơn Benjamin, tôi đã đấu tranh với cùng một vấn đề và thấy rằng @EnableMvcConfig là cần thiết sau khi đọc câu trả lời của bạn . – jatanp
Cảm ơn bạn đã giải thích kỹ lưỡng! Nó đã giúp tôi giải quyết hai vấn đề khác nhau. Tôi có nghĩa là nó phổ biến để tự trả lời với "công trình này:" cộng với các bit mã mà không giải thích ... – sjngm