springboot下MVC的MessageConverters和静态资源位置的配置

SpringBoot2.x系列教程(十八)HttpMessageConverter实战及经验 在篇文章中介绍了自定义HttpMessageConverter的使用,其中我们通过实现WebMvcConfigurer接口来完成自定义HttpMessageConverter并向spring容器中添加的操作。本篇文章我们就通过集成fastjson这个实例,来汇总一下将HttpMessageConverter添加到容器中的集中操作。 通过@Configuration添加 我们已经知道,通过@Conf... 阅读详情

1. WebMvcConfigurationSupport、WebMvcConfigurer 区别

       springboot中我们通过继承WebMvcConfigurerAdapter进行springmvc相关的配置,如拦截器、消息转换、视图解析器等。在springboot2.0后,该接口被废弃,官方推荐直接implements WebMvcConfigurer ,或者extends WebMvcConfigurationSupport。

查看源码发现@EnableWebMvc实际上引入了一个继承WebMvcConfigurationSupport的DelegatingWebMvcConfiguration。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(DelegatingWebMvcConfiguration.class)
public @interface EnableWebMvc {
}
@Configuration
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport

然后查看WebMvcAutoConfiguration的源码发现:

@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class,WebMvcConfigurerAdapter.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class,ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {
...
}

       @ConditionalOnMissingBean({WebMvcConfigurationSupport.class})意思是如果存在它修饰的类的bean,则不需要再创建这个bean。由此可得出结论:如果有bean继承了DelegatingWebMvcConfiguration,WebMvcConfigurationSupport,或者开启了@EnableWebMvc,那么 @EnableAutoConfiguration 中的WebMvcAutoConfiguration 将不会被自动配置,而是使用自定义的WebMvcConfigurationSupport的配置。

总结
推荐前两种方式

  • implements WebMvcConfigurer : 不会覆盖@EnableAutoConfiguration关于WebMvcAutoConfiguration的配置。

  • extends WebMvcConfigurationSupport :会覆盖@EnableAutoConfiguration关于WebMvcAutoConfiguration的配置。注意:使用WebMvcConfigurationSupport类配置拦截器时一定要重写addResourceHandlers来实现静态资源的映射

  • @EnableWebMvc : 等于扩展了WebMvcConfigurationSupport但是没有重写任何方法。

  • extends WebMvcConfigurerAdapter spring2.0不再建议使用,被废弃。 官方推荐直接实现WebMvcConfigurer 。

2. 自定义消息转换器MessageConverters

       以下配置代码用于使用LocalDate,LocalTime ,LocalDateTime属性接收前端传来的标准时间字符串,并返回指定的时间格式,LocalDate对应 yyyy-MM-dd,LocalDateTime对应yyyy-MM-dd HH:mm:dd,LocalTime对应 HH:mm:dd,不论参数的形式传递如body、pathVariable、requestParam里,只要时间字符串满足格式要求都可以转为对应的时间日期属性。

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import com.jun.cloud.common.util.DateUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import org.springframework.format.FormatterRegistry;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.util.ObjectUtils;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.nio.charset.Charset;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;


/**
 * WebMvc配置:
 * 1.消息转换器的配置,提供Jackson的支持
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //对外提供的api接口验证及追踪日志
       //registry.addInterceptor(new RestApiInterceptor()).addPathPatterns("/api/**");
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //添加对swagger-ui的处理
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        //registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/static/");
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    /**
     * 注意这里使用的是extendMessageConverters,这个方法不会覆盖springmvc已默认添加的HttpMessageConverter
     */
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(customerMappingJackson2HttpMessageConverter());
        converters.add(stringHttpMessageConverter());
    }

    @Bean
    public MappingJackson2HttpMessageConverter customerMappingJackson2HttpMessageConverter(){
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        messageConverter.setObjectMapper(customDateObjectMapper());
        return messageConverter;
    }

    @Bean
    public StringHttpMessageConverter stringHttpMessageConverter(){
        StringHttpMessageConverter stringConvert = new StringHttpMessageConverter();
        List<MediaType> stringMediaTypes = new ArrayList<MediaType>(){{
            add(new MediaType("text","plain",Charset.forName("UTF-8")));
        }};
        stringConvert.setSupportedMediaTypes(stringMediaTypes);
        return stringConvert;
    }

    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(localDateTimeConverter());
        registry.addConverter(localDateConverter());
        registry.addConverter(localTimeConverter());
    }

    /**
     * Json序列化和反序列化转换器,用于转换Post请求体中的json以及将我们的对象序列化为返回响应的json
     */
    @Bean
    public ObjectMapper customDateObjectMapper(){
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
        objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

        //LocalDateTime系列序列化和反序列化模块,继承自jsr310,这里修改了日期格式
        JavaTimeModule javaTimeModule = new JavaTimeModule();
        javaTimeModule.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DateUtil.DATE_FORMAT_yyyy_MM_dd_HH_mm_ss)));
        javaTimeModule.addSerializer(LocalDate.class,new LocalDateSerializer(DateTimeFormatter.ofPattern(DateUtil.DATE_FORMAT_yyyy_MM_dd)));
        javaTimeModule.addSerializer(LocalTime.class,new LocalTimeSerializer(DateTimeFormatter.ofPattern(DateUtil.DATE_FORMAT_HH_mm_ss)));
        javaTimeModule.addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DateUtil.DATE_FORMAT_yyyy_MM_dd_HH_mm_ss)));
        javaTimeModule.addDeserializer(LocalDate.class,new LocalDateDeserializer(DateTimeFormatter.ofPattern(DateUtil.DATE_FORMAT_yyyy_MM_dd)));
        javaTimeModule.addDeserializer(LocalTime.class,new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DateUtil.DATE_FORMAT_HH_mm_ss)));

        objectMapper.registerModule(javaTimeModule);
        return objectMapper;
    }


    /**
     * LocalDate转换器,用于转换RequestParam和PathVariable参数
     */
    private Converter<String, LocalDate> localDateConverter() {
        return new Converter<String, LocalDate>() {
            @Override
            public LocalDate convert(String source) {
                if(!ObjectUtils.isEmpty(source)){
                    return LocalDate.parse(source, DateTimeFormatter.ofPattern(DateUtil.DATE_FORMAT_yyyy_MM_dd));
                }
                return null ;

            }
        };
    }

    /**
     * LocalDateTime转换器,用于转换RequestParam和PathVariable参数
     */
    private Converter<String, LocalDateTime> localDateTimeConverter() {
        return new Converter<String, LocalDateTime>() {
            @Override
            public LocalDateTime convert(String source) {
                if(!ObjectUtils.isEmpty(source)) {
                    return LocalDateTime.parse(source, DateTimeFormatter.ofPattern(DateUtil.DATE_FORMAT_yyyy_MM_dd_HH_mm_ss));
                }
                return null ;
            }
        };
    }

    /**
     * LocalTime转换器,用于转换RequestParam和PathVariable参数
     */
    private Converter<String, LocalTime> localTimeConverter() {
        return new Converter<String, LocalTime>() {
            @Override
            public LocalTime convert(String source) {
                if(!ObjectUtils.isEmpty(source)) {
                    return LocalTime.parse(source, DateTimeFormatter.ofPattern(DateUtil.DATE_FORMAT_HH_mm_ss));
                }
                return null;
            }
        };
    }

}

注意implements WebMvcConfigurer后,要使用extendMessageConverters方法,这里通过@Bean的方式注入,也可以直接new一个如:

	@Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        messageConverter.setObjectMapper(customDateObjectMapper());
        converters.add(messageConverter);
        converters.add(stringHttpMessageConverter());
    }

3. 静态资源

3.1 静态资源位置

       默认情况下,Spring Boot从classpath下的/static(/public,/resources或/META-INF/resources)文件夹,或从ServletContext根目录提供静态内容。这是通过Spring MVC的ResourceHttpRequestHandler实现的,你可以自定义WebMvcConfigurerAdapter并覆写addResourceHandlers方法来改变该行为(加载静态文件),即上面的

 	@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
      
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        //添加对swagger-ui的处理
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");

        super.addResourceHandlers(registry);
    }

       你可以设置spring.resources.staticLocations属性自定义静态资源的位置(配置一系列目录位置代替默认的值),如果你这样做,默认的欢迎页面将从自定义位置加载,所以只要这些路径中的任何地方有一个index.html,它都会成为应用的主页。

       此外,除了上述标准的静态资源位置,有个例外情况是Webjars内容。任何在/webjars/**路径下的资源都将从jar文件中提供,只要它们以Webjars的格式打包。

3.2 错误页面

       如果想为某个给定的状态码展示一个自定义的HTML错误页面,你需要将文件添加到/error文件夹下。错误页面既可以是静态HTML(比如任何静态资源文件夹下添加的),也可以是使用模板构建的,文件名必须是明确的状态码或一系列标签。
例如,映射404到一个静态HTML文件,你的目录结构可能如下:

  src/
      main/
          java/
           	 <source code>
          resources/
              public/
                  error/
                     404.html
                  <other public assets>

使用FreeMarker模板映射所有5xx错误,你需要如下的目录结构:

src/
     main/
      	 java/
    		<source code>
     resources/
           templates/
               error/
                   5xx.ftl
               <other templates>

对于更复杂的映射,你可以添加实现ErrorViewResolver接口的beans:

public class MyErrorViewResolver implements ErrorViewResolver {

    @Override
    public ModelAndView resolveErrorView(HttpServletRequest request,
            HttpStatus status, Map<String, Object> model) {
        // Use the request or status to optionally return a ModelAndView
        return ...
    }

}

你也可以使用Spring MVC特性,比如@ExceptionHandler方法和@ControllerAdvice,ErrorController将处理所有未处理的异常。

从课堂笔记到动手实践:用Multisim仿真高频谐振功放(丙类)的完整流程 本文详细介绍了使用Multisim仿真高频谐振功放(丙类)的完整流程,从仿真环境准备到电路搭建、偏置网络设计、信号注入与波形观测,再到效率优化与性能验证。通过14个关键操作步骤,帮助读者将高频电子线路的理论知识转化为动手实践,深入理解丙类功放的非线性工作状态和效率优化技巧。 阅读详情

相关推荐

编程_三大编程思想:POP、OOP、AOP

简单介绍POP、OOP、AOP三大编程思想的区别和优缺点~

mikimo的博客 3899

SpringMvc---MessageConverter

SpringMvc---MessageConverter HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文 HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity, ResponseEntity 使用这些注解就能把控制器返回值直接显示在页面上,而不是被解析为视图。 1、@RequestBody 这个注解在参数上使用 @RequestB

wowo 2202

vfsglobal预约系统登录问题全解析(by quqi99)

本文全面解析VFS Global预约系统登录常见问题,包括IP限制、验证码验证失败及账号自动删除等。提供详细的解决方案,如DNS配置、浏览器设置及邮箱选择建议,帮助用户顺利完成签证预约。特别针对中国用户遇到的IP限制问题,给出了实用技巧。

gamma的博客 1342

Spring Mvc 3.1 之后如何配置messageConverters

是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。 这句话我在哥大

yfisaboy的专栏 7万+

扣子工作流实战演练

例如,你可以在代码节点的输入中引用大模型节点的输出,这样代码节点就可以使用大模型节点的输出。扣子的工作流节点并不是固定的,而是由一系列可以任意添加的节点组成的,每个节点都有其特定的功能和用途。扣子工作流中常见的节点类型如图4-2所示。在图像生成节点中设置模型为人像,输入参数名为input,变量值引用开始节点的renwu,正向提示词为{{input}},如图4-19所示。然后添加两个节点,选择“图像生成”和“画板”,将“开始”节点、“图像生成”节点、“画板”节点、“结束”节点依次串联,如图4-17所示。

夏天又到了的专栏 1587

opencv的cmake报错

1、下载 ippicv_2021.8_win_intel64_20230330_general.zip、v0.1.2a.zip、opencv_videoio_ffmpeg.dll、opencv_videoio_ffmpeg_64.dll、ffmpeg_version.cmake。由于下载源在https://raw.githubusercontent.com,由于网络原因下载不顺畅,可以先找到文件下载到对应文件夹下,或者更改网络环境。ffmpeg_version.cmake文件,打开后显示如下, 另存即可。

nownow_的博客 1299

springboot接收json参数_SpringBoot系列教程22-整合SpringMVC之HttpMessageConverters

SpringBoot系列教程22--整合SpringMVC之HttpMessageConverters作者:一一哥一.HttpMessageConverter简介1.概述现在我们进行web开发,一般都要设计成RESTful风格的API,通过json格式的数据进行交互。但是前端传入的 json 数据如何被解析成 Java 对象作为 API入参,后端返回结果又如何将 Java 对象解析成 json 格...

weixin_39983350的博客 292

实验手册(灾难恢复)

我们发现DC1与DC2的复制出现问题,此时我们检查了在DC2中,DC1是否被正确注册。这里选择还原系统状态,因为我们原DC1上只备份了AD的数据,所以我们在新的这台服务器上还原的也是AD数据库。因为我们是单域下的测试,只测试了一个域,所以它会出现这样的报错。我们选择远程共享文件夹,我们备份的时候,是在备份这台服务器上的。同时删除SRV记录,A记录,NS记录,SOA记录,框框里面的所有有关dc1的记录全部删除。如果在企业中AD数据的备份是每周或者每月都会有一次备份,选择恢复AD数据库的时间。

weixin_52364868的博客 1310

Springboot i18n国际化MessageSource类的静态调用

Springboot i18n国际化MessageSource类的静态调用

Lockey的博客 878

【100%通过率】华为OD机试真题2026双机位C卷 C语言 实现【加密算法】

【100%通过率】华为OD机试真题2026双机位C卷 Python&JS 实现【加密算法】有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。规则如下

MISAYAONE的博客 653

一篇文章带你认识 SpringBoot

文章目录一、原有 Spring 优缺点分析二、SpringBoot 的概述 一、原有 Spring 优缺点分析 (1)Spring 的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的 Java 对象(Plain Old Java Object,POJO)实现了EJB的功能。

南淮北安的博客 766

SpringBoot添加自定义HttpMessageConverter不起作用

问题:最新项目中在需要加上自定义的消息处理类针对接口的返回值做统一处理,但是发现加上了自定义的HttpMessageConverter不起作用,于是便有了这个文章了。 用法: 先说一般添加自定义HttpMessageConverter的方式,一是继承WebMvcConfigurationSupport类,然后重写configureMessageConverters方法。二是实现WebMvcConfigurer接口,然后实现extendMessageConverters方法。 我们项目中用的是第二种方法,自定

xiaoye的博客 4898

YOLOv8n轻量化实战:10分钟打通实时摄像头目标检测,附参数调优与避坑指南

本文介绍了如何快速入门YOLOv8目标检测框架,通过摄像头实战实现实时检测。YOLOv8凭借轻量化架构和跨平台优势,是新手入门的理想选择。文章详细讲解了环境搭建(1分钟完成)、核心代码逻辑(3分钟掌握)以及性能调优技巧(3分钟进阶),提供可直接运行的代码示例。重点包括:模型选择(优先yolov8n.pt)、摄像头参数优化、置信度阈值调整、检测类别指定等实用技巧,帮助开发者快速实现10-15FPS的实时检测效果,并针对不同场景提供优化建议。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 374

一次跨域配置记录@EnableWebMvc、WebMvcConfigurationSupport、WebMvcConfigurer、DelegatingWebMvcConfiguration

前置知识 @Import:即在含有该注解的类中导入相应的类(DelegatingWebMvcConfiguration)并在Springboot启动时进行加载其类中实例,总结:实例化导入的类(导入子类也会实例化父类) @Import(DelegatingWebMvcConfiguration.class) @EnableWebMvc EnableWebMvc是什么? 直接看源码,@EnableW...

weixin_41556963的博客 2018

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

SpringBoot-WebMvcConfigurer配置

Spring Boot中,接口提供了一种扩展 Spring MVC 配置的方式。你可以通过实现接口,然后重写其中的方法来自定义 Spring Boot Web 应用程序的 MVC 配置。WebMvcConfigurer是SpringBoot内部的一种配置方式,它是Spring内部的一种配置方式,用于全局定制化SpringBoot的MVC特性,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制。通过实现WebMvcConfigurer接口,开发者可以配置应用的MVC全局特性。

m0_74387428的博客 2370

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring Boot 自定义json消息转换器(配置消息转换器)

Spring Boot 自定义json消息转换器介绍实现 介绍 在使用spring boot 2.1.1时,存在日期(Date)类型的数据格式转换不符合项目的要求,还有null对象转换成“null”字符串的问题等,需要自己配置消息转换器。通过网上资料和研究,完成了自定义json消息转换器的实现。 实现 首先需要创建一个类,再类上添加注释@Configuration。 实现接口WebMvcConfigurer。 重载方法configureMessageConverters,然后将自定义json消息转换器添加

weixin_41931274的博客 1599

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringBoot中WebMvcConfigurerAdapter、WebMvcConfigurationSupport以及WebMvcConfigurer

在spring boot1.0+,我们可以使用WebMvcConfigurerAdapter来扩展springMVC的功能,其中自定义的拦截器并不会拦截静态资源(js、css等)。 @Configuration public class MyMvcConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) {

weixin_43946462的博客 467

SpringBoot统一功能处理

SpringBoot统一功能处理

chenchenchencl的博客 3485

Spring Boot 配置消息转换器

消息转换器 配合注解,实现接口返回 JSON 数据 Spring MVC中使用消息转换器HttpMessageConverter对JSON的转换提供了很好的支持 在Spring Boot中更进一步,对相关配置做了更进一步的简化,添加 Web 依赖 spring-boot-start-web 后,这个依赖中默认加入了jackson-databind作为JSON处理器,此时不需要添加额外的JSON处理器就能返回一段JSON了 com.fasterxml.jackson.annotation.JsonForm

thebigdipperbdx的博客 1363

HttpMessageConverter 消息转换器

HttpMessageConverter 是SpringMVC中提供的一个策略接口,它是一个消息转换器类,Spring Mvc中就是由HttpMessageConverter负责转换HTTP的请求和响应。默认情况下,Spring Boot 会自动加载如下消息类型转换器:StringHttpMessageConverter:负责读取字符串格式的数据和写出二进制格式的数据(当返回值是或者接受值是String类型时,是由这个处理)

Huangjiazhen711的博客 7151

利用MessageSource实现国际化[I18N]

3.8.1. 利用MessageSource实现国际化 ApplicationContext接口扩展了MessageSource接口,因而提供了消息处理的功能(i18n或者国际化)。与HierarchicalMessageSource一起使用,它还能够处理嵌套的消息,这些是Spring提供的处理消息的基本接口。让我们快速浏览一下它所定义的方法: String getM...

xzc0202 1696

Spring入门13 - MessageResource接口

入门 13 - MessageResource接口 ApplicationContext继承了org.springframework.context.MessageResource接口,您可以使用getMessage()的各个签署方法来取得讯息资源,从而实现国际化讯息的目的。 在这个主题中,我们简单的透过MessageResource的一个实作org.springframework.conte

chho的专栏 2507

Spring -- 国际化的支持(MessageResource用法)

首先呢,必须要在Spring配置文件中配置这么一段 Xml代码   SPAN style="FONT-SIZE: medium">xml version="1.0" encoding="UTF-8"?>  beans xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.

For that dream 2613

SpringBoot配置消息转换器

首先明白,因为是基于SpringBoot进行配置,所以配置都是基于配置类进行配置,配置消息转换器是在WebMvcConfigure接口实现类中重写configureMessageConverters、或者是重写extendMessageConverters方法,具体这两个方法有什么不同,我在下面会进行说明下面是一个相对简单的配置,如果有其它需求的,需要配置其它序列化特性的,我下面进行简单说明。

m0_63445035的博客 4596

Springboot 之 Springboot下的MVC

3.3 Spring Boot 下的 Spring MVC Spring Boot 下的 Spring MVC 和之前的 Spring MVC 使用基本是一样的,主要有以下注解: 3.3.1 @Controller Spring MVC 的注解,表名该类用于处理 http 请求 3.3.2 @RestController Spring 4 后新增注解,是@Controller 注解功能的增强是 @Controller 与@ResponseBody 的组合注解 。如果一个 Controller 类添加了@Re

shiyansama的博客 4128

Spring .ResourceBundleMessageResource和ApplicationContext的联系与区别

 最近美国那边的工程师提了个问题,关于 ResourceBundleMessageSource初始化的问题,HLD的详情是这样的,他想使用 ResourceBundleMessageSource这个对象在Java code里面实现国际化,(Java code是一个Helper class,不继承任何类,用于jsp显示辅助,为让jsp干净做的),但是怎么得到ResourceBundleMessage

2037
上一篇: truncate、drop、delete区别
下一篇: Mybatis的如何根据下划线_,百分号%模糊查询---escape的作用
余生之君
博客等级 码龄10年 246粉丝 98原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值