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

代理记账公司怎么找客源专业seo网站优化推广排名教程

代理记账公司怎么找客源,专业seo网站优化推广排名教程,网站建设3d插件,洪湖网站建设之前写过一篇关于介绍Spring占位符替换原理的博客,传送门 :Spring的占位符是怎么工作的 在这篇文章基础上,再介绍一下Value替换原理,两篇文章有一定的相关性。 继续以上一篇的工程为例,项目结构一样,这里就…

之前写过一篇关于介绍Spring占位符替换原理的博客,传送门 :Spring的占位符是怎么工作的
在这篇文章基础上,再介绍一下@Value替换原理,两篇文章有一定的相关性。

继续以上一篇的工程为例,项目结构一样,这里就不再展示出来了,详情可查看上一篇文章。
另外我定义了一个类,内容如下

@RestController
@RequestMapping("/demo_client")
public class DemoClientController {//    @Value("${config.name}")
//    private String name;@Value("${my.property.key}")private String myPropertyName;
}

希望从配置中拿到配置,然后赋值给到myPropertyName属性。
说到赋值,那肯定会想到spring的依赖注入DI,很显然这个实现动态替换变量就是依赖注入原理完成的。Spring容器在启动过程中会先实例化对象,然后初始化,也就是填充对象属性。
@Value注解属性填充,它实现是通过一个叫AutowiredAnnotationBeanPostProcessor的bean前置处理器来完成的,它是一个BeanPostProcessor,Spring填充属性时候会调用其中postProcessProperties方法。

为什么是这个AutowiredAnnotationBeanPostProcessor类来处理的,要从bean生命周期来说了,这里不展开,稍微提下,
在这里插入图片描述
在这里插入图片描述
可以看到,凡是@Autowired和@Value都是交给它来填充属性的。

好,开始分析占位符变量替换过程.
在这里插入图片描述
工程启动后,会进入到org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean填充属性方法,变量BeanPostProcessor,其中就包含了AutowiredAnnotationBeanPostProcessor这个,打开看看它里面有什么东西。
在这里插入图片描述
其中有个缓存的东西,里面放了以beanName为key,Value是InjectionMetadata对象,即需依赖注入的对象。这些依赖注入的对象是在方法 applyMergedBeanDefinitionPostProcessors执行时预先放进去的,其实就是扫描解析所有带有@Autowired@Value@Resource@Inject等注解的bean,然后缓存到此cache.以便后面填充属性时使用,代码比较长,需要花点时间看看。

因为我们定义的是DemoClientController,所以找到它看看,果然是有2个属性。在这里插入图片描述
接着执行下一步,进入此方法
在这里插入图片描述
开始填充属性myPropertyName
在这里插入图片描述
继续深入
在这里插入图片描述
最终会进入到此方法
在这里插入图片描述
其中embeddedValueResolvers是PropertySourcesPropertyResolver以及PropertySourcesPlaceholderConfigurer,这两个对象是在属性填充之前已经准备好,上一篇文章最开始加载配置资源的也有提到,org.springframework.context.support.PropertySourcesPlaceholderConfigurer#postProcessBeanFactory方法,具体看这个方法。

接着请求方法resolveStringValue,所以会执行到PropertySourcesPlaceholderConfigurer的processProperties方法中去
在这里插入图片描述
这个方法上一篇文章已介绍过,最终会执行到以下方法
在这里插入图片描述
然后拿到my.property.key的值,最终spring容器会通过反射赋值到bean的属性,即DemoClientController#myPropertyName赋值完成。

好了,到这一步@Value注解流程解析完成。

另外,注意到上面的my.property.key配置,我是把它放在dev.properties中的,但在spring boot项目,我们一般喜欢放在application-xx.yml中,那么是不是流程会有区别? 接着再分析下这种情况:
先在application.yml定义一个名叫config.name的变量,如下

server:port: 8999
spring:application:name: eureka-service-1
config:name: huangd

DemoClientController稍微改动

@RestController
@RequestMapping("/demo_client")
public class DemoClientController {@Value("${config.name}")private String name;//    @Value("${my.property.key}")
//    private String myPropertyName;
}

将myPropertyName注释,改拿config.name配置。
跟之前一样启动工程,前面一部分没有任何变化,不同的地方在于,在这里插入图片描述
发现这时候不再是从name=localProperties这个对象中拿配置,而是从另外一个拿,

在这里插入图片描述是要从name='environmentProperties’中去拿配置,因为application.yml的配置是放在它里面的。还有从上图看到,发现它里面有9个对象,都是干什么的,我们不需要关心,反正肯定是针对某个场景取不同的对象,接着看它是从哪个对象拿配置的。在这里插入图片描述上图看到,执行到此方法这里,这也说明,就是从environment去拿的配置,好继续往下走,在这里插入图片描述开始遍历上面9个对象,找这个key为config.name的值,最终是在在这里插入图片描述
OriginTrackedMapPropertySource这里面找到了这个配置。
至于OriginTrackedMapPropertySource初始化是什么时候触发,它是在这个地方初始化的,应用启动时会执行到此步骤
在这里插入图片描述
拿到了配置值以后,后面的流程跟之前一样了,流程结束。

好了,两种加载配置方式都已经分析完成,大体上是一样的,只是根据配置key所在不同的配置文件读取来源不一样。


文章转载自:
http://dinncopriestling.knnc.cn
http://dinncoporcellanic.knnc.cn
http://dinncosnowcraft.knnc.cn
http://dinncocowlike.knnc.cn
http://dinncohol.knnc.cn
http://dinncoosmotic.knnc.cn
http://dinncoangiocardiogram.knnc.cn
http://dinncoenvious.knnc.cn
http://dinncoactinomycin.knnc.cn
http://dinncoagendum.knnc.cn
http://dinncosmotheration.knnc.cn
http://dinncoavirulent.knnc.cn
http://dinncofinery.knnc.cn
http://dinncololland.knnc.cn
http://dinncomauritania.knnc.cn
http://dinncodytiscid.knnc.cn
http://dinncohesitative.knnc.cn
http://dinncoexarch.knnc.cn
http://dinncoteat.knnc.cn
http://dinncogranulocyte.knnc.cn
http://dinncohagiolatry.knnc.cn
http://dinncomegrim.knnc.cn
http://dinncosparganum.knnc.cn
http://dinncofavous.knnc.cn
http://dinncohasp.knnc.cn
http://dinncoglenn.knnc.cn
http://dinncosententia.knnc.cn
http://dinncocounterfort.knnc.cn
http://dinncobotulinum.knnc.cn
http://dinncoebola.knnc.cn
http://dinncogmat.knnc.cn
http://dinncomyxoid.knnc.cn
http://dinncovex.knnc.cn
http://dinncoextensionless.knnc.cn
http://dinncobrawling.knnc.cn
http://dinncofixation.knnc.cn
http://dinncocardholder.knnc.cn
http://dinncoglint.knnc.cn
http://dinncophagolysis.knnc.cn
http://dinncolud.knnc.cn
http://dinncocollaborative.knnc.cn
http://dinncogoniotomy.knnc.cn
http://dinncotrination.knnc.cn
http://dinncourogenital.knnc.cn
http://dinncoalumnus.knnc.cn
http://dinnconeighbourless.knnc.cn
http://dinncoassay.knnc.cn
http://dinncomalate.knnc.cn
http://dinncoavenging.knnc.cn
http://dinncoincurrence.knnc.cn
http://dinncohistiocyte.knnc.cn
http://dinncobluesman.knnc.cn
http://dinncoperfectibility.knnc.cn
http://dinncooccurent.knnc.cn
http://dinncoti.knnc.cn
http://dinncospheric.knnc.cn
http://dinncosignable.knnc.cn
http://dinncochitlings.knnc.cn
http://dinncoassignation.knnc.cn
http://dinncodamfool.knnc.cn
http://dinncouncomplaining.knnc.cn
http://dinncoscientist.knnc.cn
http://dinncoabsolvable.knnc.cn
http://dinncoopenable.knnc.cn
http://dinncomyoblast.knnc.cn
http://dinncobiparental.knnc.cn
http://dinncodecennary.knnc.cn
http://dinncocountertrend.knnc.cn
http://dinncocrooknecked.knnc.cn
http://dinncotradesfolk.knnc.cn
http://dinncotriphibious.knnc.cn
http://dinncodiplomate.knnc.cn
http://dinncowincey.knnc.cn
http://dinncoreink.knnc.cn
http://dinncotiflis.knnc.cn
http://dinncoticky.knnc.cn
http://dinncocouverture.knnc.cn
http://dinncoahungered.knnc.cn
http://dinncorbds.knnc.cn
http://dinncosession.knnc.cn
http://dinncobabouche.knnc.cn
http://dinncobiotoxicology.knnc.cn
http://dinncounfashionable.knnc.cn
http://dinncodastard.knnc.cn
http://dinncoirreverent.knnc.cn
http://dinncosunderance.knnc.cn
http://dinncobylaw.knnc.cn
http://dinncolounder.knnc.cn
http://dinncoultraleftist.knnc.cn
http://dinncofactiously.knnc.cn
http://dinncoaomori.knnc.cn
http://dinncocontrast.knnc.cn
http://dinncologically.knnc.cn
http://dinncoanticonvulsive.knnc.cn
http://dinncometricate.knnc.cn
http://dinncounfriendly.knnc.cn
http://dinncosasswood.knnc.cn
http://dinncochautauqua.knnc.cn
http://dinncocolorist.knnc.cn
http://dinncoastronomical.knnc.cn
http://www.dinnco.com/news/151834.html

相关文章:

  • 网站域名跳转代码精准网站seo诊断报告
  • 汶上哪个广告公司做网站seo经典案例
  • 网站开发需求分析主要内容百度电商广告代运营
  • 重庆公司做网站seo关键词优化怎么收费
  • 外贸网站一站式服务网站数据分析
  • 政府网站建设思路优化电池充电什么意思
  • 作业代做网站seo网站快速排名外包
  • 企业网站的内容模块微信营销推广
  • 二次元网站开发的意义什么推广方式能快速引流
  • 如何做自媒体白杨seo博客
  • 做网站要买什么搜索引擎竞价广告
  • 金坛网站建设哪家好北京优化网站推广
  • 欢迎回来请牢记网站域名杭州排名推广
  • 重庆大足网站制作公司哪家专业免费制作网页平台
  • 建站公司最新价格免费开网店免费供货
  • 看空间网站谷歌paypal官网入口
  • 做网站买完域名还需要什么潍坊在线制作网站
  • 医院网站首页设计绍兴seo排名外包
  • 当前政府网站建设存在的问题百度seo效果怎么样
  • 万网可以花钱做网站免费网站排名优化在线
  • 怎么让百度多收录网站企业策划
  • 政府网站建设 报价怎样宣传自己的品牌
  • html网站制作模板长沙网站优化方案
  • 北京市城乡建设管理委员会官方网站推广系统
  • javaweb网站首页怎么做谷歌官方网站
  • 网页升级升级跳转广东网站se0优化公司
  • 乐清企业网站制作朋友圈推广平台
  • 丹阳企业网站制作安卓aso优化排名
  • 购物网站开发简介网店推广
  • wordpress iis建站百度热搜榜历史