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

app开发多少钱优化核心系列网站

app开发多少钱,优化核心系列网站,wordpress 分类目录字数,17做网站郑州文章目录 1. 读取配置文件application.yml中内容的方法1.1 Environment1.2 Value注解1.3 ConfigurationProperties 注解1.4 PropertySources 注解#xff0c;获取自定义配置文件中的内容#xff0c;yml文件需要自行实现适配器1.5 YamlPropertiesFactoryBean 加载 YAML 文件1.… 文章目录 1. 读取配置文件application.yml中内容的方法1.1 Environment1.2 Value注解1.3 ConfigurationProperties 注解1.4 PropertySources 注解获取自定义配置文件中的内容yml文件需要自行实现适配器1.5 YamlPropertiesFactoryBean 加载 YAML 文件1.6 各种方式总结 2. 自定义的配置文件如果不使用配置类加载即使放在resources目录下也是获取不到内容的3. 如果两个文件的key重复了以默认配置文件application.yml中的内容为准 配置文件application.yml server:port: 8001 blog:user: name: xinliushijianhome: 徐州work: 上海marathonpb: 4191. 读取配置文件application.yml中内容的方法 1.1 Environment Environment 是 springboot 核心的环境配置接口它提供了简单的方法来访问应用程序属性包括系统属性、操作系统环境变量、命令行参数、和应用程序配置文件中定义的属性等等。 Springboot 程序启动加载流程里会执行SpringApplication.run中的prepareEnvironment()方法进行配置的初始化 使用 Environment 方式来获取配置属性值非常简单只要注入Environment类调用其方法getProperty(属性key)即可 示例代码 import lombok.extern.slf4j.Slf4j; import org.junit.Test;import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.core.env.Environment; import org.springframework.test.context.junit4.SpringRunner;import javax.annotation.Resource;import static org.junit.jupiter.api.Assertions.assertEquals;RunWith(SpringRunner.class) SpringBootTest(classes XinJavaDemoApplication.class) Slf4j public class EnvironmentTest {Resourceprivate Environment env;Testpublic void test1() {String port env.getProperty(server.port);System.out.println(port: port);assertEquals(port, 8001);}Testpublic void test2() {String home env.getProperty(blog.user.home);System.out.println(blog.user.home: home);assertEquals(home, 徐州);}} key不存在时执行不会报错value为null 1.2 Value注解 Value注解是Spring框架提供的用于注入配置属性值的注解它可用于类的成员变量、方法参数和构造函数参数上这个记住很重要 在应用程序启动时使用 Value 注解的 Bean 会被实例化。所有使用了 Value 注解的 Bean 会被加入到 PropertySourcesPlaceholderConfigurer 的后置处理器集合中。 当后置处理器开始执行时它会读取 Bean 中所有 Value 注解所标注的值并通过反射将解析后的属性值赋值给标有 Value 注解的成员变量、方法参数和构造函数参数。 需要注意在使用 Value 注解时需要确保注入的属性值已经加载到 Spring 容器中否则会导致注入失败。 只有标注了Component、Service、Controller、Repository 或 Configuration 等容器管理注解的类由 Spring 管理的 bean 中使用 Value注解才会生效。而对于普通的POJO类则无法使用 Value注解进行属性注入。 如果我们想要获取 TestService 类中的某个变量的属性值需要使用依赖注入的方式而不能使用 new 的方式。通过依赖注入的方式创建 TestService 对象Spring 会在创建对象时将对象所需的属性值注入到其中。 key不存在时执行会报错 key不存在时给出默认值执行不会报错结果就是取默认值 示例代码 Value(${blog.user.homeeeee:徐州})private String home;Testpublic void testValue() {System.out.println(home: home);assertEquals(徐州, home);}正常取值 1.3 ConfigurationProperties 注解 ConfigurationProperties注解是 SpringBoot 提供的一种更加便捷来处理配置文件中的属性值的方式可以通过自动绑定和类型转换等机制将指定前缀的属性集合自动绑定到一个Bean对象上 加载原理 在 Springboot 启动流程加载配置的 prepareEnvironment() 方法中有一个重要的步骤方法 bindToSpringApplication(environment)它的作用是将配置文件中的属性值绑定到被 ConfigurationProperties 注解标记的 Bean对象中。但此时这些对象还没有被 Spring 容器管理因此无法完成属性的自动注入。 那么这些Bean对象又是什么时候被注册到 Spring 容器中的呢 这就涉及到了 ConfigurationPropertiesBindingPostProcessor 类它是 Bean后置处理器负责扫描容器中所有被 ConfigurationProperties 注解所标记的 Bean对象。如果找到了则会使用 Binder 组件将外部属性的值绑定到它们身上从而实现自动注入。 创建配置类prefix 属性名 配置key import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration;Data Configuration ConfigurationProperties(prefix blog.user) public class BlogUser {private String name;private String home;private String work;private String marathon;private String nameeeee; }示例代码 Resourceprivate BlogUser blogUser;Testpublic void testConfig() {System.out.println(blogUser: JSONObject.toJSONString(blogUser));System.out.println(nameeeee: blogUser.getNameeeee());}属性名在配置文件中不存在时获取此属性值的时候执行不会报错结果为null 1.4 PropertySources 注解获取自定义配置文件中的内容yml文件需要自行实现适配器 除了系统默认的 application.yml 或者 application.properties 文件外我们还可能需要使用自定义的配置文件来实现更加灵活和个性化的配置。与默认的配置文件不同的是自定义的配置文件无法被应用自动加载需要我们手动指定加载。 PropertySources 注解的实现原理相对简单应用程序启动时扫描所有被该注解标注的类获取到注解中指定自定义配置文件的路径将指定路径下的配置文件内容加载到 Environment 中这样可以通过 Value 注解或 Environment.getProperty() 方法来获取其中定义的属性值了。 当加载.yaml文件时启动项目居然报错了经过一番摸索我发现PropertySources 注解只内置了PropertySourceFactory适配器。也就是说它只能加载.properties文件。 如果想要加载一个.yaml类型文件则需要自行实现yaml的适配器 YamlPropertySourceFactory 而在加载配置时要显示的指定使用 YamlPropertySourceFactory适配器这样就完成了PropertySource注解加载 yaml 文件。 支持.properties文件若是.yml文件则自行实现yaml的适配器否则识别不了Value注解中没给默认值启动时就会报错 增加自定义配置文件 xinliushijian.properties blog.user.name心流时间 blog.user.home徐州 blog.user.work上海 blog.user.marathon: 419xinliu.yml new:year: 2024month: 01day: 04其中用到的Value注解在key不存在时报错启动时 在Value注解中加上默认值执行就不报错了 不通过bean通过new 构造器的方法得到对象获得属性值执行不报错结果为null xinliu.yml文件中的内容识别不到启动时就会报错需要自行实现yaml的适配器 配置类示例代码 import lombok.Data; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySources; import org.springframework.beans.factory.annotation.Value;Data Configuration PropertySources({PropertySource(value classpath:xinliushijian.properties,encoding utf-8),PropertySource(value classpath:xinliu.yml,encoding utf-8,factory YamlPropertySourceFactory.class) }) public class PropertySourcesConf {Value(${blog.user.home:xuzhou})private String home;Value(${blog.user.nameeee:xinliushijian})private String name;Value(${new.year:2023})private String year;}yaml适配器示例代码 import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; import org.springframework.core.env.PropertiesPropertySource; import org.springframework.core.env.PropertySource; import org.springframework.core.io.support.EncodedResource; import org.springframework.core.io.support.PropertySourceFactory;import java.io.IOException; import java.util.Properties;public class YamlPropertySourceFactory implements PropertySourceFactory {Overridepublic PropertySource? createPropertySource(String name, EncodedResource encodedResource) throws IOException {YamlPropertiesFactoryBean factory new YamlPropertiesFactoryBean();factory.setResources(encodedResource.getResource());Properties properties factory.getObject();return new PropertiesPropertySource(encodedResource.getResource().getFilename(), properties);} }测试类示例代码 Autowiredprivate PropertySourcesConf propertySourcesConf;Testpublic void testProp() {System.out.println(propertySourcesConf: JSONObject.toJSONString(propertySourcesConf));System.out.println(nameeeee: propertySourcesConf.getName());System.out.println(year: propertySourcesConf.getYear());}1.5 YamlPropertiesFactoryBean 加载 YAML 文件 我们可以使用 YamlPropertiesFactoryBean 类将 YAML 配置文件中的属性值注入到 Bean 中。 配置类 import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.io.ClassPathResource;import java.util.Objects;Configuration public class MyYamlConfig {Beanpublic static PropertySourcesPlaceholderConfigurer yamlConfigurer() {PropertySourcesPlaceholderConfigurer configurer new PropertySourcesPlaceholderConfigurer();YamlPropertiesFactoryBean yaml new YamlPropertiesFactoryBean();yaml.setResources(new ClassPathResource(xinliu.yml));configurer.setProperties(Objects.requireNonNull(yaml.getObject()));return configurer;} }可以通过 Value 注解或 Environment.getProperty() 方法来获取其中定义的属性值。 1.6 各种方式总结 我们可以通过 Value 注解、Environment 类、ConfigurationProperties 注解、PropertySource 注解等方式来获取配置信息。 其中Value 注解适用于单个值的注入而其他几种方式适用于批量配置的注入。不同的方式在效率、灵活性、易用性等方面存在差异在选择配置获取方式时还需要考虑个人编程习惯和业务需求。 如果重视代码的可读性和可维护性则可以选择使用 ConfigurationProperties 注解如果更注重运行效率则可以选择使用 Environment 类。总之不同的场景需要选择不同的方式以达到最优的效果。 2. 自定义的配置文件如果不使用配置类加载即使放在resources目录下也是获取不到内容的 自定义文件xinliushijianhaha.yml newnew:year: 2024month: 01day: 04测试结果 3. 如果两个文件的key重复了以默认配置文件application.yml中的内容为准 application.yml中的配置 自定义配置文件有用配置类自动加载xinliu.yml 测试结果 结果分析 application.yml这种默认的配置文件中的key和自定义配置文件中的key相等时以application.yml中的内容为准当配置内容是数字时前面的0会消失value是04得到的结果是4自动减去了0 引用
文章转载自:
http://www.morning.fgppj.cn.gov.cn.fgppj.cn
http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn
http://www.morning.nfmtl.cn.gov.cn.nfmtl.cn
http://www.morning.psgbk.cn.gov.cn.psgbk.cn
http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn
http://www.morning.xjqhh.cn.gov.cn.xjqhh.cn
http://www.morning.ngcsh.cn.gov.cn.ngcsh.cn
http://www.morning.synlt.cn.gov.cn.synlt.cn
http://www.morning.lrskd.cn.gov.cn.lrskd.cn
http://www.morning.rmqmc.cn.gov.cn.rmqmc.cn
http://www.morning.mltsc.cn.gov.cn.mltsc.cn
http://www.morning.rbkl.cn.gov.cn.rbkl.cn
http://www.morning.lqznq.cn.gov.cn.lqznq.cn
http://www.morning.linzhigongmao.cn.gov.cn.linzhigongmao.cn
http://www.morning.stsnf.cn.gov.cn.stsnf.cn
http://www.morning.xsqbx.cn.gov.cn.xsqbx.cn
http://www.morning.hkpyp.cn.gov.cn.hkpyp.cn
http://www.morning.nfcxq.cn.gov.cn.nfcxq.cn
http://www.morning.bnkcl.cn.gov.cn.bnkcl.cn
http://www.morning.yqsr.cn.gov.cn.yqsr.cn
http://www.morning.xfcjs.cn.gov.cn.xfcjs.cn
http://www.morning.yzzfl.cn.gov.cn.yzzfl.cn
http://www.morning.lsjtq.cn.gov.cn.lsjtq.cn
http://www.morning.lfmwt.cn.gov.cn.lfmwt.cn
http://www.morning.lgznf.cn.gov.cn.lgznf.cn
http://www.morning.lsqmb.cn.gov.cn.lsqmb.cn
http://www.morning.fbmrz.cn.gov.cn.fbmrz.cn
http://www.morning.ndxss.cn.gov.cn.ndxss.cn
http://www.morning.wfbs.cn.gov.cn.wfbs.cn
http://www.morning.ykgp.cn.gov.cn.ykgp.cn
http://www.morning.lmdkn.cn.gov.cn.lmdkn.cn
http://www.morning.tnnfy.cn.gov.cn.tnnfy.cn
http://www.morning.blqsr.cn.gov.cn.blqsr.cn
http://www.morning.ypnxq.cn.gov.cn.ypnxq.cn
http://www.morning.fyzsq.cn.gov.cn.fyzsq.cn
http://www.morning.nfmlt.cn.gov.cn.nfmlt.cn
http://www.morning.mmqng.cn.gov.cn.mmqng.cn
http://www.morning.hfytgp.cn.gov.cn.hfytgp.cn
http://www.morning.wdshp.cn.gov.cn.wdshp.cn
http://www.morning.nrftd.cn.gov.cn.nrftd.cn
http://www.morning.hdtcj.cn.gov.cn.hdtcj.cn
http://www.morning.ychoise.com.gov.cn.ychoise.com
http://www.morning.mpsnb.cn.gov.cn.mpsnb.cn
http://www.morning.myhpj.cn.gov.cn.myhpj.cn
http://www.morning.stsnf.cn.gov.cn.stsnf.cn
http://www.morning.mspqw.cn.gov.cn.mspqw.cn
http://www.morning.ckfyp.cn.gov.cn.ckfyp.cn
http://www.morning.lxwjx.cn.gov.cn.lxwjx.cn
http://www.morning.nrddx.com.gov.cn.nrddx.com
http://www.morning.wlqbr.cn.gov.cn.wlqbr.cn
http://www.morning.rykw.cn.gov.cn.rykw.cn
http://www.morning.sbrxm.cn.gov.cn.sbrxm.cn
http://www.morning.hnhgb.cn.gov.cn.hnhgb.cn
http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn
http://www.morning.hrpjx.cn.gov.cn.hrpjx.cn
http://www.morning.xdnhw.cn.gov.cn.xdnhw.cn
http://www.morning.kwpnx.cn.gov.cn.kwpnx.cn
http://www.morning.txzqf.cn.gov.cn.txzqf.cn
http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn
http://www.morning.nrchx.cn.gov.cn.nrchx.cn
http://www.morning.nrfrd.cn.gov.cn.nrfrd.cn
http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn
http://www.morning.qfzjn.cn.gov.cn.qfzjn.cn
http://www.morning.xpwdf.cn.gov.cn.xpwdf.cn
http://www.morning.zbkwj.cn.gov.cn.zbkwj.cn
http://www.morning.yxplz.cn.gov.cn.yxplz.cn
http://www.morning.nhdw.cn.gov.cn.nhdw.cn
http://www.morning.kxqmh.cn.gov.cn.kxqmh.cn
http://www.morning.mumgou.com.gov.cn.mumgou.com
http://www.morning.qmbgb.cn.gov.cn.qmbgb.cn
http://www.morning.wgzgr.cn.gov.cn.wgzgr.cn
http://www.morning.niukaji.com.gov.cn.niukaji.com
http://www.morning.bwygy.cn.gov.cn.bwygy.cn
http://www.morning.xzjsb.cn.gov.cn.xzjsb.cn
http://www.morning.tdgwg.cn.gov.cn.tdgwg.cn
http://www.morning.trfrl.cn.gov.cn.trfrl.cn
http://www.morning.llyjx.cn.gov.cn.llyjx.cn
http://www.morning.spfq.cn.gov.cn.spfq.cn
http://www.morning.rxyz.cn.gov.cn.rxyz.cn
http://www.morning.bby45.cn.gov.cn.bby45.cn
http://www.tj-hxxt.cn/news/260441.html

相关文章:

  • 网站建设 长摊 无形资产无锡市太湖新城建设网站
  • 池州哪里有做网站县门户网站建设整改
  • 吉林电商网站建设价格网站建设的六个步骤
  • 正品查询网站怎么做谷歌搜索引擎 google
  • 营销型网站建设实战》新网站怎么快速收录必做
  • 南宁网站设计平台展示产品的网站
  • 网页设计需求模板青岛seo服务哪家好
  • 河源网站网站建设seo优化方案策划书
  • 西安百度网站快速排名优秀的设计网站推荐
  • 南京建设教育网站html模板 多列展示模板
  • 郴州网站建设公司在哪里县市区没有建设信用网站和平台
  • 网站建设方案调查分析报告网线制作顺序
  • 营销型网站制作建设软件开发工具排行榜
  • wordpress 网站播放器插件python 网站开发神器
  • 用wordpress制作网站网络营销是以什么为中心
  • 个人网站域名名称大全wordpress more标签使用教程
  • 造一个官方网站wordpress考试模板
  • 什么公司设计网站建设一个域名做两个网站可以么
  • iis网站服务器安全隐患百度网页怎么制作
  • 广西营销型网站建设公司如何做网站卖商品的网站
  • 做网站编辑累吗罗定市城乡规划建设局网站
  • 大型餐饮网站建设wordpress插件图片无法加载
  • 网站开发 外包公司团关系转接网站建设
  • 网站建设简介联系方式织梦网站源码下载
  • 志愿者网站时长码怎么做学习网站开发心得
  • 网站维护html模板目前最好的营销模式
  • 沈阳网站制作服务做一个网站
  • 旅游交友的网站建设促销活动推广方案
  • 浅析我国门户网站建设不足wordpress关闭网站吗
  • 自己做的网站打开速度慢凡科网 小程序