如何在spring boot中设置消息转换器和资源映射?

时间:2015-06-30 04:47:27

标签: spring-boot

我想将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/" />

1 个答案:

答案 0 :(得分:0)

我解决了以下问题。

fpr