我想将spring web应用程序替换为使用spring boot的版本,并且还有与正常情况不同的web-app目录。 (src / main / webapp - > src / main / othernames)
之前:它具有默认servlet的servlet上下文配置。
<annotation-driven>
<message-converters>
<beans:bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<beans:property name="objectMapper">
<beans:bean class="com.knappsack.swagger4springweb.util.ScalaObjectMapper"/>
</beans:property>
</beans:bean>
</message-converters>
</annotation-driven>
<default-servlet-handler/>
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
除了在弹出启动Web应用程序示例中遵循以下默认说明之外,我还必须添加其他一些内容,如下所示。
首先我添加了tomcat embeded servlet容器。
public class MyEmbeddedServletContainerCustomizer implements
EmbeddedServletContainerCustomizer {
private static final Logger LOG =
LoggerFactory.getLogger(MyEmbeddedServletContainerCustomizer.class);
@Value("${servlet.container.maxThreads}")
private int MAX_THREADS;
@Override
public void customize(ConfigurableEmbeddedServletContainer factory) {
if(factory instanceof TomcatEmbeddedServletContainerFactory) {
customizeTomcat((TomcatEmbeddedServletContainerFactory) factory);
}
}
public void customizeTomcat(TomcatEmbeddedServletContainerFactory factory) {
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
Object defaultMaxThreads = connector.getAttribute("maxThreads");
connector.setAttribute("maxThreads", MAX_THREADS);
LOG.info("Changed Tomcat connector maxThreads from " +
defaultMaxThreads + " to " + MAX_THREADS);
}
});
}
}
@覆盖 public void addResourceHandlers(ResourceHandlerRegistry registry){
if (!registry.hasMappingForPattern("/resources/swagger-ui/**")) {
registry.addResourceHandler("src/main/webapp/resources/swagger-ui/**").addResourceLocations(
"classpath:/META-INF/resources/webjars/");
}
}
其次,我添加了该类以进行其他配置。
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter{
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
}
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}
我将XML文件中的配置替换为spring引导配置。但我不能完美地做到这一点。如何配置资源映射和其他?
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
答案 0 :(得分:0)
我解决了以下问题。
fpr