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

增城企业网站建设wordpress. 登录

增城企业网站建设,wordpress. 登录,wordpress 4.5.2 漏洞,什么网站做优化最好?在Spring框架中PropertySource注解是非常常用的一个注解#xff0c;其主要作用是将外部化配置解析成key-value键值对存入Spring容器的Environment环境中#xff0c;以便在Spring应用中可以通过Value或者占位符${key}的形式来使用这些配置。 使用案列 // Propert…在Spring框架中PropertySource注解是非常常用的一个注解其主要作用是将外部化配置解析成key-value键值对存入Spring容器的Environment环境中以便在Spring应用中可以通过Value或者占位符${key}的形式来使用这些配置。 使用案列 // PropertySource需要和Configuration配个使用 // PropertySource加载的配置文件时需要注意加载的顺序后面加载的配置会覆盖前面加载的配置 // PropertySource支持重复注解 // value值不仅支持classpath表达式还支持任意合法的URI表达式 Configuration PropertySource(value classpath:/my.properties,encoding UTF8) PropertySource(value classpath:/my2.properties,encoding UTF8,ignoreResourceNotFound true) public static class PropertyConfig { }Component public class App {Value(${key1:default-val})private String value;Value(${key2:default-val2})private String value2; }下面是配置文件my.properties和my2.properties的具体内容。 # my.properties key1自由之路# my2.properties key1程序员 key2自由之路Spring容器启动时会将my.properties和my2.properties的内容加载到Environment中并在App类的依赖注入环节将key1和key2的值注入到对应的属性。 自定义PropertySource工厂 阅读PropertySource的源代码我们发现还有一个factory属性。从这个属性的字面意思看我们不难猜测出这个属性设置的是用于产生PropertySource的工厂。 Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Documented Repeatable(PropertySources.class) public interface PropertySource {String name() default ;String[] value();boolean ignoreResourceNotFound() default false;String encoding() default ;Class? extends PropertySourceFactory factory() default PropertySourceFactory.class;}要深入理解PropertySourceFactory我们先要知道以下的背景知识。 在Spring中配置的来源有很多。Spring将配置来源统一抽象成 PropertySource 这个抽象类Spring中内建的常用的 PropertySource 有以下这些 MapPropertySource CommandLinePropertySource PropertiesPropertySource SystemEnvironmentPropertySource ResourcePropertySource ResourcePropertySource这个类将一系列配置来源统一成ResourcePropertySource可以说是对 PropertySource 的进一步封装。 PropertySourceFactory 接口用于产生PropertySource。Spring中PropertySourceFactory 默认的实现是DefaultPropertySourceFactory用于生产 ResourcePropertySource。 经过上面的介绍我们知道如果没有配置PropertySource的factory属性的话默认的PropertySourceFactory使用的就是DefaultPropertySourceFactory。当然我们也可以自定义PropertySourceFactory用于“生产”我们自定义的PropertySource。下面就演示一个将yaml文件解析成MapPropertySource的使用案列。 /*** Spring中内置的解析yaml的处理器* YamlProcessor* - YamlMapFactoryBean -- 解析成Map* - YamlPropertiesFactoryBean -- 解析成Properties*/ public class YamlMapSourceFactory implements PropertySourceFactory {Overridepublic PropertySource? createPropertySource(String name, EncodedResource resource) throws IOException {YamlMapFactoryBean yamlMapFactoryBean new YamlMapFactoryBean();yamlMapFactoryBean.setResources(resource.getResource());MapString, Object map yamlMapFactoryBean.getObject();return new MapPropertySource(name, map);} }// 加了factory属性必须加name属性 // 有了factory机制我们可以做很多自定一的扩展比如配置可以从远程来 PropertySource(name my.yaml,value classpath:/my.yaml,encoding UTF8,factory YamlMapSourceFactory.class) public static class PropertyConfig { }原理简析 到这边我们对PropertySource已经有了一个感性的认识知道了其主要作用是将各种类型的外部化配置文件以key-value的形式加载到Spring的Environment中。这个部分我们从源码的角度来分析下Spring是怎么处理PropertySource这个注解的。分析源码可以加深我们对PropertySource的认识看源码不是目的是为了加深理解学习Spring的设计思想。 PropertySource注解的处理是在ConfigurationClassPostProcessor中进行触发的。最终会调用到ConfigurationClassParser的processPropertySource方法。 // ConfigurationClassParser#processPropertySource private void processPropertySource(AnnotationAttributes propertySource) throws IOException {String name propertySource.getString(name);if (!StringUtils.hasLength(name)) {name null;}String encoding propertySource.getString(encoding);if (!StringUtils.hasLength(encoding)) {encoding null;}String[] locations propertySource.getStringArray(value);Assert.isTrue(locations.length 0, At least one PropertySource(value) location is required);boolean ignoreResourceNotFound propertySource.getBoolean(ignoreResourceNotFound);Class? extends PropertySourceFactory factoryClass propertySource.getClass(factory);// 如果有自定义工厂就使用自定义工厂没有自定义工厂就使用DefaultPropertySourceFactoryPropertySourceFactory factory (factoryClass PropertySourceFactory.class ?DEFAULT_PROPERTY_SOURCE_FACTORY : BeanUtils.instantiateClass(factoryClass));// 遍历各个location地址for (String location : locations) {try {// location地址支持占位符的形式String resolvedLocation this.environment.resolveRequiredPlaceholders(location);// 获取ResourceResource resource this.resourceLoader.getResource(resolvedLocation);addPropertySource(factory.createPropertySource(name, new EncodedResource(resource, encoding)));}catch (IllegalArgumentException | FileNotFoundException | UnknownHostException | SocketException ex) {// Placeholders not resolvable or resource not found when trying to open itif (ignoreResourceNotFound) {if (logger.isInfoEnabled()) {logger.info(Properties location [ location ] not resolvable: ex.getMessage());}}else {throw ex;}}} }总的来说Spring处理PropertySource的源代码非常简单这边就不再过多赘述了。
http://www.yutouwan.com/news/90030/

相关文章:

  • 优秀的vi设计手册seo的基本内容
  • php 除了做网站网站用单页面框架做
  • 怎么制定网站上海私人网站建设
  • 福州网站建设多少钱wordpress此网页包含重定向循环
  • 网站已经收录了 但是输入公司名找不到免费qq注册入口
  • 外发加工单表格范本外贸网站优化哪家好
  • 网站制作外包牛商做网站的理念
  • 高埗镇网站建设网页设计与制作有什么感想
  • 购物网站线下推广方案技术号的网站建设
  • 网站建设 意向协议书公司网站制作范文
  • 网站发布时间更改网页打不开但是微信和qq都可以上
  • 沈阳建网站电商wordpress页面调用子页面
  • 上海做网站大的公司有哪些深圳龙华建设公司
  • 课程网站开发与设计logo设计报价明细表
  • 洛阳网站建设seo如何使用花生壳做网站
  • 网站建设价格如何深圳做分销网站的公司
  • 罗湖网站建设罗湖网站设计有哪些网站可以做店面设计软件
  • 2021年关键词排名seo如何优化排名
  • 甘肃网站建设公司电话做网站只做前端可以用吗
  • html课程教学网站模板住房和城乡建设部网站行标
  • 厦门网站建设是什么网页版微信网址
  • 网络公司网站样本百度网站提交收录
  • 专业做家政网站只做同城交易的网站
  • 兰州网站建设q.479185700棒计算机网站开发国外参考文献
  • 政务网站建设信息怎么设置公司网址
  • 凤岗网站设计门户网站建设技术要求
  • 里水网站开发做网站公司松江
  • 企业网站备案域名信息陕西省建设监理协会查询官方网站
  • 珠宝企业的门户网站开发如何查询网站建设者
  • 网站建设外包给外企移动平台开发技术