我使用spring-boot-starter-web 1.5.17。找不到有关构建Root WebApplicationContext和Servlet WebApplicationContext的任何自动配置。
当不使用Spring Boot时,我们需要这样做
= IF(OR(SUMPRODUCT(--((ISERR(SEARCH({"/amp/"},a2)))))>0),FALSE,TRUE)))))))))))))
我知道WebMvcAutoConfiguration做了很多春季MVC配置,但是我找不到自动构建Root WebApplicationContext和Servlet WebApplicationContext的信息。
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{SecurityAdminConfig.class, DataSourceConfig.class, JavaConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{WebMvcConfig.class};
}
//controller、service
}
如何知道这个bean是Root WebApplicationContext还是Servlet WebApplicationContext?
答案 0 :(得分:0)
默认情况下,Spring Boot Web(或其他)应用程序中只有一个应用程序上下文。它是在应用程序启动时由SpringApplication创建的。
答案 1 :(得分:0)
正确的方法是:
public class App {
public static void main(String[] args) {
new SpringApplicationBuilder()
.parent(ParentConfig.class).web(WebApplicationType.NONE)
.child(WebConfig.class).web(WebApplicationType.SERVLET)
.sibling(RestConfig.class).web(WebApplicationType.SERVLET)
.run(args);
}
}
我从这里取了它:enter link description here 但是,仍然不清楚为什么默认情况下所有内容都在同一上下文中。 另外,我不确定是否可以在所有子上下文之间共享由WebMvcAutoconfiguration创建的其他bean。