当前位置: 首页 > news >正文

wordpress为什么加载速度很慢2022年seo还值得做吗

wordpress为什么加载速度很慢,2022年seo还值得做吗,网络营销案例介绍,重装电脑后下载wordpress在Spring中经常需要各种数据类型之间进行转换,比如配置文件中的数据转换为代码所需要的数据类型,在使用SpringMvc的时候,将前台传来的参数自动转换为我们接收参数时定义的类型。 Spring中的ConversionService就是提供这种服务的 1.DefaultC…
在Spring中经常需要各种数据类型之间进行转换,比如配置文件中的数据转换为代码所需要的数据类型,在使用SpringMvc的时候,将前台传来的参数自动转换为我们接收参数时定义的类型。

Spring中的ConversionService就是提供这种服务的

1.DefaultConversionService

DefaultConversionService是一种默认的实现,如果我们不定义,就是使用默认的
@Test
public void defaultConversionService(){ConversionService conversionService = new DefaultConversionService();//这里是校验这个DefaultConversionService是否支持将String转换为Integerboolean b = conversionService.canConvert(String.class, Integer.class);System.out.println(b);Long convert = conversionService.convert("123", Long.class);System.out.println(convert);String convert1 = conversionService.convert(new Date() , String.class);System.out.println(convert1);Date convert2 = conversionService.convert("Mon Nov 04 23:32:14 CST 2024" , Date.class);System.out.println(convert2);}运行结果:
true
123
Tue Nov 05 11:02:17 CST 2024
Tue Nov 05 13:32:14 CST 2024

我们可以看到这里DefaultConversionService 可以成功的将 String转换为Long,将Date转换为String,将String转换为Date

为什么DefaultConversionService能支持这么多数据类型之间的相互转换呢,我们看看他的源码就知道了,原来在DefaultConversionService构造方法中就调用addDefaultConverters()方法注册了我们常用的数据类型转换器Converter,如果我们需要转换的时候,它就会找一个能够完成转换的Converter进行转换

public class DefaultConversionService extends GenericConversionService {@Nullableprivate static volatile DefaultConversionService sharedInstance;/*** Create a new {@code DefaultConversionService} with the set of* {@linkplain DefaultConversionService#addDefaultConverters(ConverterRegistry) default converters}.*/public DefaultConversionService() {addDefaultConverters(this);}/*** Return a shared default {@code ConversionService} instance,* lazily building it once needed.* <p><b>NOTE:</b> We highly recommend constructing individual* {@code ConversionService} instances for customization purposes.* This accessor is only meant as a fallback for code paths which* need simple type coercion but cannot access a longer-lived* {@code ConversionService} instance any other way.* @return the shared {@code ConversionService} instance (never {@code null})* @since 4.3.5*/public static ConversionService getSharedInstance() {DefaultConversionService cs = sharedInstance;if (cs == null) {synchronized (DefaultConversionService.class) {cs = sharedInstance;if (cs == null) {cs = new DefaultConversionService();sharedInstance = cs;}}}return cs;}/*** Add converters appropriate for most environments.* @param converterRegistry the registry of converters to add to* (must also be castable to ConversionService, e.g. being a {@link ConfigurableConversionService})* @throws ClassCastException if the given ConverterRegistry could not be cast to a ConversionService*/public static void addDefaultConverters(ConverterRegistry converterRegistry) {addScalarConverters(converterRegistry);addCollectionConverters(converterRegistry);converterRegistry.addConverter(new ByteBufferConverter((ConversionService) converterRegistry));converterRegistry.addConverter(new StringToTimeZoneConverter());converterRegistry.addConverter(new ZoneIdToTimeZoneConverter());converterRegistry.addConverter(new ZonedDateTimeToCalendarConverter());converterRegistry.addConverter(new ObjectToObjectConverter());converterRegistry.addConverter(new IdToEntityConverter((ConversionService) converterRegistry));converterRegistry.addConverter(new FallbackObjectToStringConverter());converterRegistry.addConverter(new ObjectToOptionalConverter((ConversionService) converterRegistry));}/*** Add common collection converters.* @param converterRegistry the registry of converters to add to* (must also be castable to ConversionService, e.g. being a {@link ConfigurableConversionService})* @throws ClassCastException if the given ConverterRegistry could not be cast to a ConversionService* @since 4.2.3*/public static void addCollectionConverters(ConverterRegistry converterRegistry) {ConversionService conversionService = (ConversionService) converterRegistry;converterRegistry.addConverter(new ArrayToCollectionConverter(conversionService));converterRegistry.addConverter(new CollectionToArrayConverter(conversionService));converterRegistry.addConverter(new ArrayToArrayConverter(conversionService));converterRegistry.addConverter(new CollectionToCollectionConverter(conversionService));converterRegistry.addConverter(new MapToMapConverter(conversionService));converterRegistry.addConverter(new ArrayToStringConverter(conversionService));converterRegistry.addConverter(new StringToArrayConverter(conversionService));converterRegistry.addConverter(new ArrayToObjectConverter(conversionService));converterRegistry.addConverter(new ObjectToArrayConverter(conversionService));converterRegistry.addConverter(new CollectionToStringConverter(conversionService));converterRegistry.addConverter(new StringToCollectionConverter(conversionService));converterRegistry.addConverter(new CollectionToObjectConverter(conversionService));converterRegistry.addConverter(new ObjectToCollectionConverter(conversionService));converterRegistry.addConverter(new StreamConverter(conversionService));}private static void addScalarConverters(ConverterRegistry converterRegistry) {converterRegistry.addConverterFactory(new NumberToNumberConverterFactory());converterRegistry.addConverterFactory(new StringToNumberConverterFactory());converterRegistry.addConverter(Number.class, String.class, new ObjectToStringConverter());converterRegistry.addConverter(new StringToCharacterConverter());converterRegistry.addConverter(Character.class, String.class, new ObjectToStringConverter());converterRegistry.addConverter(new NumberToCharacterConverter());converterRegistry.addConverterFactory(new CharacterToNumberFactory());converterRegistry.addConverter(new StringToBooleanConverter());converterRegistry.addConverter(Boolean.class, String.class, new ObjectToStringConverter());converterRegistry.addConverterFactory(new StringToEnumConverterFactory());converterRegistry.addConverter(new EnumToStringConverter((ConversionService) converterRegistry));converterRegistry.addConverterFactory(new IntegerToEnumConverterFactory());converterRegistry.addConverter(new EnumToIntegerConverter((ConversionService) converterRegistry));converterRegistry.addConverter(new StringToLocaleConverter());converterRegistry.addConverter(Locale.class, String.class, new ObjectToStringConverter());converterRegistry.addConverter(new StringToCharsetConverter());converterRegistry.addConverter(Charset.class, String.class, new ObjectToStringConverter());converterRegistry.addConverter(new StringToCurrencyConverter());converterRegistry.addConverter(Currency.class, String.class, new ObjectToStringConverter());converterRegistry.addConverter(new StringToPropertiesConverter());converterRegistry.addConverter(new PropertiesToStringConverter());converterRegistry.addConverter(new StringToUUIDConverter());converterRegistry.addConverter(UUID.class, String.class, new ObjectToStringConverter());}}

2.DefaultFormattingConversionService

有的时候我们需要将某一种数据类型转换为指定的字符串格式,也需要将指定格式的字符串转换为某一种数据类型,比如我们需要将Date转为为yyyy-MM-dd格式的字符串。我们在配置文件配置yyyy-MM-dd 格式的字符串,需要将其转换为Date类型的数据。在SpringMvc将数据返回给前端之前我们可能需要将Person类型的数据转换为JSON格式的字符串

这个时候我们就需要DefaultFormattingConversionService,它在完成数据类型转换的同时还支持将某种数据类型转换为指定格式的字符串,而且我们还可以自定义格式转换器来支持我们自定义的数据类型。

2.1 自定义Date和String之间转换的Formatter
@Test
public void defaultFormattingConversionService(){DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();conversionService.addFormatter(new Formatter<Date>() {@Overridepublic String print(Date object, Locale locale) {return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(object);}@Overridepublic Date parse(String text, Locale locale) throws ParseException {return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(text);}});String convert1 = conversionService.convert(new Date() , String.class);System.out.println(convert1);Date convert2 = conversionService.convert("2024-11-04 23:52:36" , Date.class);System.out.println(convert2);}运行结果:
2024-11-05 11:48:33
Mon Nov 04 23:52:36 CST 2024

上面的代码我们自定义了一个Date和String的Formatter,那么DefaultFormattingConversionService在进行Date和String之间的相互转换时,就会用我们自定义的Formatter 进行格式化和解析

@Test
public void defaultFormattingConversionService(){DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();conversionService.addFormatter(new Formatter<Date>() {@Overridepublic String print(Date object, Locale locale) {return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(object);}@Overridepublic Date parse(String text, Locale locale) throws ParseException {return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(text);}});String convert1 = conversionService.convert(new Date() , String.class);System.out.println(convert1);Date convert2 = conversionService.convert("Mon Nov 04 23:32:14 CST 2024" , Date.class);System.out.println(convert2);}运行结果:
org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value 'Mon Nov 04 23:32:14 CST 2024'; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [Mon Nov 04 23:32:14 CST 2024]

这里报错了,说明了我们添加了自定义的Formatter之后,不支持将Mon Nov 04 23:32:14 CST 2024格式的字符串转换为Date类型了,支持支将yyyy-MM-dd HH:mm:ss格式的字符串转换为Date类型,说明之前默认的支持Mon Nov 04 23:32:14 CST 2024格式的Formatter被我们自定义Formatter给覆盖了

2.2 自定义Person和String之间转换的Formatter
@Test
public void defaultFormattingConversionService1(){DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();conversionService.addFormatter(new Formatter<Person>() {@Overridepublic String print(Person object, Locale locale) {return JSON.toJSONString(object);}@Overridepublic Person parse(String text, Locale locale) throws ParseException {return JSON.parseObject(text , Person.class);}});Person person = new Person();person.setName("孙悟空");person.setAge(20);String convert1 = conversionService.convert(person , String.class);System.out.println(convert1);Person convert2 = conversionService.convert(convert1 , Person.class);System.out.println(convert2);}运行结果:
{"age":20,"name":"孙悟空"}
Person{name='孙悟空', age=20}

我们看到成功将Person对象转换为我们自定义的JSON格式,也可以成功将JSON格式的字符串转换为Person对象


文章转载自:
http://preprandial.rqjL.cn
http://sometimey.rqjL.cn
http://lipide.rqjL.cn
http://pilferer.rqjL.cn
http://frcm.rqjL.cn
http://vigia.rqjL.cn
http://brazen.rqjL.cn
http://indiscrete.rqjL.cn
http://asbolite.rqjL.cn
http://hyperboloid.rqjL.cn
http://bothie.rqjL.cn
http://cambridgeshire.rqjL.cn
http://transformation.rqjL.cn
http://pangen.rqjL.cn
http://psychasthenia.rqjL.cn
http://recur.rqjL.cn
http://snood.rqjL.cn
http://tapadera.rqjL.cn
http://udderless.rqjL.cn
http://routinism.rqjL.cn
http://necrologist.rqjL.cn
http://scoop.rqjL.cn
http://inclosure.rqjL.cn
http://frailty.rqjL.cn
http://mistrustful.rqjL.cn
http://specialise.rqjL.cn
http://ductor.rqjL.cn
http://phallocrat.rqjL.cn
http://cutoff.rqjL.cn
http://jesuitical.rqjL.cn
http://doglegged.rqjL.cn
http://curious.rqjL.cn
http://kittenish.rqjL.cn
http://spinal.rqjL.cn
http://linearity.rqjL.cn
http://overripe.rqjL.cn
http://back.rqjL.cn
http://anchorless.rqjL.cn
http://allantois.rqjL.cn
http://donkey.rqjL.cn
http://truant.rqjL.cn
http://cantilation.rqjL.cn
http://supravital.rqjL.cn
http://guiltless.rqjL.cn
http://unascertainable.rqjL.cn
http://legging.rqjL.cn
http://ale.rqjL.cn
http://lumpish.rqjL.cn
http://temporization.rqjL.cn
http://genii.rqjL.cn
http://rasped.rqjL.cn
http://dispatchbox.rqjL.cn
http://spillikin.rqjL.cn
http://disparager.rqjL.cn
http://kanji.rqjL.cn
http://superfilm.rqjL.cn
http://sustained.rqjL.cn
http://foolocracy.rqjL.cn
http://stogy.rqjL.cn
http://semicivilized.rqjL.cn
http://uncurable.rqjL.cn
http://noblest.rqjL.cn
http://debarrass.rqjL.cn
http://manufacture.rqjL.cn
http://buccinator.rqjL.cn
http://carbonyl.rqjL.cn
http://trotsky.rqjL.cn
http://orangewood.rqjL.cn
http://oppositely.rqjL.cn
http://hitchily.rqjL.cn
http://cholelith.rqjL.cn
http://somehow.rqjL.cn
http://cannonball.rqjL.cn
http://unfitting.rqjL.cn
http://coccidiostat.rqjL.cn
http://sailboard.rqjL.cn
http://footie.rqjL.cn
http://counterstatement.rqjL.cn
http://deaminase.rqjL.cn
http://oleic.rqjL.cn
http://redetermination.rqjL.cn
http://levyist.rqjL.cn
http://lifter.rqjL.cn
http://agreement.rqjL.cn
http://lehr.rqjL.cn
http://rupicoline.rqjL.cn
http://milligram.rqjL.cn
http://ultramafic.rqjL.cn
http://proteinous.rqjL.cn
http://hcg.rqjL.cn
http://timebargain.rqjL.cn
http://hatpin.rqjL.cn
http://peninsula.rqjL.cn
http://midcult.rqjL.cn
http://undersurface.rqjL.cn
http://tardy.rqjL.cn
http://plumber.rqjL.cn
http://sup.rqjL.cn
http://disapprobatory.rqjL.cn
http://salamandrine.rqjL.cn
http://www.dt0577.cn/news/125316.html

相关文章:

  • 网站建设开发客户真正免费建站
  • 任丘市网站建设百度指数疫情
  • 专业的建网站的公司英语培训机构前十名
  • 深圳个人做网站网页制作网站
  • 基于web的网站建设步骤专业seo公司
  • 广西住房与城乡建设厅网站首页企业营销策划实训报告
  • c2c网站怎么做做市场推广应该掌握什么技巧
  • 方向专业网站制作咨询最近韩国电影片
  • 大淘客平台怎么做分销网站华联股份股票
  • 做网站在厦门排前5名宁波谷歌优化
  • 米思米网站订单取消怎么做东莞好的网站国外站建设价格
  • 电子工程网站外贸网站平台有哪些
  • 杭州建设银行网站首页seo外链建设方法
  • 企业宣传推广怎么做seo指的是什么意思
  • 做集群网站网页模板建站系统
  • 企业宣传网站制作百度seo排名优
  • 郑州软件网站建设短网址链接生成
  • 网站IcP在哪查建立营销型网站
  • 做网站关键词重庆广告公司
  • 有没有做博物馆的3d网站百度客户端电脑版
  • wordpress id清空百度网站优化
  • 网站建设 网页制作网推项目平台
  • dede购物网站湖北seo服务
  • icp网站建设域名注册服务机构
  • 南京h5网站建设百度快照排名
  • 常宁网页定制seo排名系统
  • 免费有限公司网站2023年适合小学生的新闻有哪些
  • java网站开发需要哪些基础网络优化培训
  • 计算机网站开发书籍seo关键词推广方式
  • 长沙市网站建设公司网如何营销