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

怎么加php网站登陆源码双井做网站的公司

怎么加php网站登陆源码,双井做网站的公司,在哪网站建设,wordpress 密码文章目录 bootstrap配置文件的读取 网关项目源码 RPC项目源码 配置中心项目源码 bootstrap配置文件的读取 我们首先来了解一下springboot是如何做配置管理的。 了解了springboot对配置文件的管理#xff0c;我们就能知道为什么springcloud类型的项目要使用bootstrap配置文件了… 文章目录 bootstrap配置文件的读取 网关项目源码 RPC项目源码 配置中心项目源码 bootstrap配置文件的读取 我们首先来了解一下springboot是如何做配置管理的。 了解了springboot对配置文件的管理我们就能知道为什么springcloud类型的项目要使用bootstrap配置文件了。 关于SpringBoot是如何加载application和bootstrap配置文件的底层原理这里就不再次赘述了大家可以移步到知识星球内部的如下位置进行学习。 简单回忆一下既然和配置文件相关那么我们找到spring的run方法中的如下这行代码然后往下分析即可。 ConfigurableEnvironment environment this.prepareEnvironment(listeners, bootstrapContext, applicationArguments);因为通过上面的学习我们知道Environment中存储了我们项目的所有配置信息。 这里我们着重分析一下这一行代码中都做了多少事情。 private ConfigurableEnvironment prepareEnvironment(SpringApplicationRunListeners listeners, DefaultBootstrapContext bootstrapContext, ApplicationArguments applicationArguments) {ConfigurableEnvironment environment this.getOrCreateEnvironment();this.configureEnvironment(environment, applicationArguments.getSourceArgs());ConfigurationPropertySources.attach(environment);listeners.environmentPrepared(bootstrapContext, environment);DefaultPropertiesPropertySource.moveToEnd(environment);Assert.state(!environment.containsProperty(spring.main.environment-prefix), Environment prefix cannot be set via properties.);this.bindToSpringApplication(environment);if (!this.isCustomEnvironment) {EnvironmentConverter environmentConverter new EnvironmentConverter(this.getClassLoader());environment environmentConverter.convertEnvironmentIfNecessary(environment, this.deduceEnvironmentClass());}ConfigurationPropertySources.attach(environment);return environment; }首先是基于当前环境创建一个环境对象。 这里由于我们的项目是Web项目所以创建的是StandardServletEnvironment 并且这里会层层的通过extends的继承关系不断的初始化父类。 最终又会回到子类的实现。 通过我们前面的了解我们知道其实这些代码的作用就是往容器末尾不断的添加配置文件的信息。 不过上面的创建的是系统的环境而我们自己编写的配置文件的信息的加载并不是在这里完成的。 我们最终读取配置文件的代码是通过监听器的方式来完成的。 listeners.environmentPrepared(bootstrapContext, environment);而事件监听是spring提供的一个非常重要的扩展机制很多功能我们都可以基于监听器这种方式来实现。 我们只需要负责发布事件对应的事件监听器就执行相应的代码来处理这个事件。 可以发现在我们的环境创建好之后然后就会发布一个环境预备的事件。那么此时就等待对应的监听器进行处理即可。 public void environmentPrepared(ConfigurableBootstrapContext bootstrapContext, ConfigurableEnvironment environment) {this.initialMulticaster.multicastEvent(new ApplicationEnvironmentPreparedEvent(bootstrapContext, this.application, this.args, environment)); }事件发布之后通过层层的下叠最终spring通过拿到所有注册的监听器的方式让这些监听器判断当前事件是否是由自己处理的如果是就处理当前事件即可。 这里我们可以知道其实我们发布的就是一个环境预备完成的事件。 按图索骥即可。 继续往下找就会发现通过迭代器的方式会通过这些后置处理器对我们的配置文件信息进行处理。 再早期的版本中用的是ConfigFile进行配置文件处理。 只不过版本高了就废弃了而是用其他几个。 不过大致的意思也差不多。 因此到此为止其实我们大概就知道了当项目流程到达这一步的时候其实Spring做的事情就是通过IO流的方式去读取所有的配置文件信息并且对他们进行解析。 这里我们跳到看ConfigDataEnvironment即可 因此通过上面我们可以看到只要我们再规定的位置编写配置文件spring就可以帮助我们去加载这些配置文件。 并且我们也可以通过实现自己的监听器的方式再触发对应的环境准备完毕事件之后使用我们的监听器去处理我们的配置文件。 这里我通过实现一下按照上面的方法实现监听器的方式来加载配置文件信息。 特别注意 在 Spring Boot 中ApplicationEnvironmentPreparedEvent事件发生在 ApplicationContext 创建之前这意味着使用 Component 或 Configuration 注解的方式无法确保监听器被及时注册。 相反我需要在应用启动时手动注册该监听器。或者使用spring.factories的方式来完成自动装配。 # Application Listeners org.springframework.context.ApplicationListener\ blossom.project.config.core.listener.BootstrapApplicationListenerpackage blossom.project.config.core.listener;import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent; import org.springframework.boot.env.OriginTrackedMapPropertySource; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.MutablePropertySources; import org.springframework.stereotype.Component;import java.io.InputStream; import java.util.Map; import java.util.Objects; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap;/*** author: ZhangBlossom* date: 2023/12/26 22:33* contact: QQ:4602197553* contact: WX:qczjhczs0114* blog: https://blog.csdn.net/Zhangsama1* github: https://github.com/ZhangBlossom* BootstrapListener类* 用于在项目启动的时候通过环境准备事件完成对bootstrap配置文件的读取加载* 特别注意* 在 Spring Boot 中ApplicationEnvironmentPreparedEvent* 事件发生在 ApplicationContext 创建之前* 这意味着使用 Component 或 Configuration 注解的方式无法确保监听器被及时注册。* 相反我需要在应用启动时手动注册该监听器。*/ //Component //Configuration //AutoConfiguration public class BootstrapListenerimplements ApplicationListenerApplicationEnvironmentPreparedEvent {static {System.out.println(成功被加载...);}Overridepublic void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {MutablePropertySources propertySources event.getEnvironment().getPropertySources();Properties properties new Properties();try {InputStream inputStream BootstrapListener.class.getClassLoader().getResourceAsStream(bootstrap .properties);properties.load(inputStream);ConcurrentHashMapObject,Object cache new ConcurrentHashMap();for (Map.EntryObject, Object entry : properties.entrySet()) {cache.put(entry.getKey(),entry.getValue());}propertySources.addLast(new OriginTrackedMapPropertySource(bootstrap.properties,properties));}catch (Exception e){e.printStackTrace();}} }SpringBootApplication(exclude DataSourceAutoConfiguration.class) public class ConfigApplication {public static void main(String[] args) {SpringApplication app new SpringApplication(ConfigApplication.class);app.addListeners(new BootstrapListener());ConfigurableApplicationContext context app.run(args);BootstrapListener bean context.getBean(BootstrapListener.class);System.out.println(bean);ConfigurableEnvironment environment context.getEnvironment();System.out.println(environment);} }运行代码之后发现成功了。 当然我还发现了另一种解决方法就是使用PropertySource注解。 但是使用这个注解的一个问题在于他只能解析比较常规的配置文件。对于txt这种应该是解析不了。 而且很明显我们不应该再代码中硬编码。所以我个人比较倾向于使用监听器的方式去解析配置文件。 Configuration PropertySource(classpath:bootstrap.yml) public class PropertySourceConfig { }因此我们的第一个问题如何处理bootstrap类型的文件的问题就已经解决了。 接下来我们可以研究一下Nacos是如何实现配置文件的加载的这也对我们上面分析的逻辑有确定作用。
http://www.zqtcl.cn/news/54835/

相关文章:

  • 临沂企业网站建站模板wordpress 主机配置
  • 县城网站怎样做经验创意图片
  • 印刷厂网站模板哪里有网站开发
  • 销售网站html源码大学生家教网站开发
  • 网站子目录绑定二级域名wordpress 悬浮广告
  • 专业微信网站建设公司首选贸易公司网站建设价格
  • 网站建设合同简单企业网站建设研究论文
  • 免费行情软件app网站大全哪个网站做x展架比较好 知乎
  • 免费公司网站网站建设找哪一家好
  • 广州网络推广建站名城建设有限公司网站
  • 深圳网站优化平台惠阳做网站公司
  • 中国能源建设集团采购网站进不去全球贸易中心网
  • 做网站买主机还是服务器廉洁沈阳网站
  • 宾馆网站建设方案网页设计代码单词
  • 湖北做网站的公司wordpress ping设置
  • 主机屋网站搭建设置2018网站开发最新技术
  • 网站建设软硬件要求wordpress 企业网站模板
  • 做网站 图片是文本番禺人才网招聘网官网最新招聘
  • 齐齐哈尔建设局网站首页万方数据库
  • 网上提交报名表系统的网站建设在源码之家下载的网站模板可以作为自己的网站吗
  • 百度公司做网站服务wordpress前端是什么意思
  • 那个网站有帮人做图的微网站开发工具有哪些
  • 房产中介网站开发模板wordpress midway
  • 企业免费做网站专门做图片是网站
  • 广州网站建设定制多少钱网络营销的现状及问题
  • 高质量摄影作品网站南京比较好的软件公司
  • 镇江外贸网站建设杭州交易网站建设
  • 购物网站策划建设方案域名注册服务商
  • 做网站是要收费的吗自己怎么建立微网站
  • 网站建设推广哪个好上海装修公司排名10大家装公司