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

上海做网站的多吗网页设计的基本原则是什么

上海做网站的多吗,网页设计的基本原则是什么,山东 网站建设,主流的网站开发技术一 原理 1 配置的存储 springboot在启动的时候会后构建一个org.springframework.core.env.Environment类型的对象#xff0c;这个对象就是用于存储配置#xff0c;如图springboot会在启动的最开始创建一个Environment对象 这个webApplicationType的枚举是在new SpringAppli…一 原理 1 配置的存储 springboot在启动的时候会后构建一个org.springframework.core.env.Environment类型的对象这个对象就是用于存储配置如图springboot会在启动的最开始创建一个Environment对象 这个webApplicationType的枚举是在new SpringApplication()时候指定的 如果org.springframework.web.reactive.DispatcherHandler存在并且可加载他本身或其依赖项之一不存在或无法加载并且org.springframework.web.servlet.DispatcherServlet不存在或不可加载并且org.glassfish.jersey.servlet.ServletContainer不存在或不可加载那么就会使用WebApplicationType.REACTIVE构建ApplicationReactiveWebEnvironment类型的Environment对象即Spring WebFlux框架如果javax.servlet.Servletorg.springframework.web.context.ConfigurableWebApplicationContext中任何一个不存在或不可加载那么就会使用WebApplicationType.NONE构建ApplicationEnvironment类型的Environment对象即普通spring非web框架否则就会使用WebApplicationType.SERVLET构建ApplicationServletEnvironment类型的Environment对象即Servlet也就是spring mvc框架 我们以常用的spring mvc为例先看下ApplicationServletEnvironment类的数据结构都大同小异 本质是一个PropertyResolver接口核心是能提供一个根据配置中某个属性的key获取对应属性值的方法和跟据某个规则解析属性值的方法他所有的子类都是在对其做一些扩张让其使用更方便比如ConfigurableEnvironment增加的MutablePropertySources getPropertySources()方法就是为了能获取到全部的配置内容 其实springboot的这三种Environment都是StandardEnvironment的子类而StandardEnvironment的父类AbstractEnvironment使用了MutablePropertySources作为数据源集合的类型当然它也是根据其实现接口ConfigurableEnvironment中的MutablePropertySources getPropertySources()方法来确定数据源集合的类型。 可以看出来这个类对比原始的PropertyResolver接口多一个数据源集合springboot的配置原理简单来说就是将不同来源的配置组装成不同数据源类型的数据源对象然后放到MutablePropertySources中根据名称和数据源对象进行key-value存储使用的时候遍历MutablePropertySources中所有的数据源的value从中找到第一个符合条件的值找到之后再进行解析比如${xxxx}这种。这个使用的逻辑即PropertyResolver接口的全部实现是由PropertySourcesPropertyResolver对象代理的在AbstractEnvironment的构造方法中会new一个PropertySourcesPropertyResolver对象 MutablePropertySources中有一个ListPropertySource? propertySourceList成员变量这个就是上面说的数据源集合 PropertySource就是具体的配置了其实也就两个变量name数据源名称source具体的数据源。这个实现类有很多我们也可以自己定义比如自己创建一个类用做source然后实现PropertySource那几个根据source查询值的方法 2 配置的来源 其实这个配置的来源可以任何时候添加到Environment对象中只不过如果想让springboot在启动过程中加载bean时使用到我们的数据源我们应该在PropertySourcesPlaceholderConfigurer的postProcessBeanFactory()方法执行前加进Environment中低版本的springboot用的是PropertyPlaceholderConfigurer不过这个早就已经弃用了所以也就不用管他了下面我们介绍下PropertySourcesPlaceholderConfigurer 可以看到他是一个BeanFactoryPostProcessor实现类这个类会在启动的refresh阶段执行postProcessBeanFactory()方法 可以看到这里会新建一个数据源集合并且把environment和localProperties加进去这个localProperties就是我们手动构建PropertySourcesPlaceholderConfigurer时指定的配置文件路径 Beanpublic static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {PropertySourcesPlaceholderConfigurer configurer new PropertySourcesPlaceholderConfigurer();configurer.setLocation(new ClassPathResource(config.properties));return configurer;} 之后会将这个数据源集合封装为一个StringValueResolver用于解析属性 可以看到这个先被用于解析bean的属性如这种的${xx}其实我感觉这个也是为了兼容老代码毕竟最早的spring也只有在配置文件里注入的这种方式 bean idcacheService classmy.user.UserImplproperty namename value${user.123.name}//bean 然后可以看到执行了beanFactoryToProcess.addEmbeddedValueResolver(valueResolver)方法这个方法只是将这个valueResolver解析器存了起来现在还没用。 会等到解析value时候在AutowiredAnnotationBeanPostProcessor用到下面介绍几个系统配置的常用的数据源         2.1 系统的环境变量和java启动时的启动参数 StandardEnvironment在初始化时会由父类执行StandardEnvironment的customizePropertySources方法创建两个数据源放到数据源集合这两个数据源我们也很熟悉就是系统的环境变量和java启动时的启动参数即System.getenv()和System.getProperties() 2.2 application.yml 旧版本是由ConfigFileApplicationListener作为启动监听器在监听到ApplicationEnvironmentPreparedEvent事件也就是创建完Environment后会发的一个事件中加载的 可以看到他也实现了EnvironmentPostProcessor接口并把自身和其他spring.factories文件中配置的org.springframework.boot.env.EnvironmentPostProcessorxxxx合并一起执行对应的postProcessEnvironment()方法而他本身的postProcessEnvironment方法会加载application.yml文件 新版本是用ConfigDataEnvironmentPostProcessor加载的同时ConfigFileApplicationListener被废弃了改为由EnvironmentPostProcessorApplicationListener来执行EnvironmentPostProcessor的方法职责单一更清晰了些 2.3 PropertySources/PropertySource PropertySources其实就是PropertySource的集合是由ConfigurationClassPostProcessor将PropertySource路径的配置文件内容添加到environment中 可以看到这个路径甚至还支持${xxx}这种动态路径environment.resolveRequiredPlaceholders会将${xxx}从environment对象中获取真正的值然后将多个location解析后的propertySource组合起来形成一个CompositePropertySource对象 3 配置的使用 3.1 BeanDefinition 的属性注入 上面介绍过通常就是对BeanDefinition的propertyValues进行解析在PropertySourcesPlaceholderConfigurer里 bean idcacheService classmy.user.UserImplproperty namename value${user.123.name}//bean 3.2 Value 上面也介绍过在AutowiredAnnotationBeanPostProcessor会进行解析 Value(${user.123.name})private String user123Name; 3.3 ConfigurationProperties Data Component ConfigurationProperties(prefix user.123) public class UserConfiguration {/*** 姓名*/private String name;/*** 性别*/private String sex; } 他是由ConfigurationPropertiesBindingPostProcessor的postProcessBeforeInitialization(Object bean, String beanName)来进行绑定的 可以看到实际上执行的是Binder的bind()方法这个方法可以将以某个相同前缀的属性绑定到对应对象的属性上主要关注Binder构造器的前两个参数IterableConfigurationPropertySource sources, PlaceholdersResolver placeholdersResolver可以看到都是用propertySources作为数据源来进行查找和解析的而这个propertySources是ConfigurationPropertiesBinder.register(registry)方法中调用ConfigurationPropertiesBinder.Factory#create()方法中生成的 可以看到如果只有一个PropertySourcesPlaceholderConfigurer类型的bean时这个数据源就是我们上面说的那个和3.1和3.2所用的一样的数据源PropertySourcesPlaceholderConfigurer的appliedPropertySources。否则就会用Environment作为数据源 3.4 environment 这个就简单了直接从environment对象取即可 environment.getProperty(user.123.name)environment.resolvePlaceholders(${user.123.name})environment.resolveRequiredPlaceholders(${user.123.name}) 如果解析不到会报错
http://www.hkea.cn/news/14374887/

相关文章:

  • 在深圳学网站设计html5移动端手机网站开发流程
  • 仿新浪首页网站模板上海vi设计公司有哪些
  • 电子商务与网站建设结业论文wordpress搜索过滤
  • 请简述网站开发的流程霸州 网络 网站建设
  • 郑州网站建设做网站的人叫什么软件
  • 如何在百度能搜索到公司网站兰州易天网站建设公司有哪些?
  • qq网站代码做路牌的网站
  • 有没有专门的网站做品牌授权的开发公司制作铁艺围栏在什么科目列支
  • 丹东站西安工程信息交易中心
  • 外贸网站模板 免费网页制作网站开发的论文
  • 网站设计色彩搭配wordpress更改后登录地址
  • 在线做海报的网站旅游网站功能
  • 凡科建站的怎么取消手机网站WordPress实现文章分类筛选
  • 射阳做网站公司证券官网首页
  • 做网站html花生壳动态域名申请
  • 旅游门户网站建设项目招标能翻到国外的浏览器
  • 做食品的采购员常用网站小程序商城介绍
  • 做珠宝首饰网站做的网站打开慢
  • 大型房产网站建设wordpress 图标上传
  • 如何做网站公证重庆新华网
  • 宜春做网站营销失败案例分析
  • 济南免费网站建设个人网站开发多少钱
  • 优质高职院校建设专题网站深圳网站建设的基本知识
  • 购物网站产品做促销能赚钱吗产品网站开发流程
  • 网站建设如何快速增加用户网站分为哪几个部分
  • 一台电脑如何做网站网站域名所有权 查询
  • 海南第六建设工程有限公司网站wordpress添加关键字
  • 网站建设指导合同微信小程序设计与开发
  • 建设部国家标准网站仿网站百度会怎么做
  • 常州做网站价位雷州手机网站建设公司