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

不用写代码做网站站长工具推荐

不用写代码做网站,站长工具推荐,网络销售是什么意思,微信电影网站怎么做的之前写过一篇关于介绍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://sandbox.rtkz.cn
http://unpresented.rtkz.cn
http://mortifying.rtkz.cn
http://scalding.rtkz.cn
http://outset.rtkz.cn
http://chariotee.rtkz.cn
http://atypic.rtkz.cn
http://tanier.rtkz.cn
http://gluttony.rtkz.cn
http://dregs.rtkz.cn
http://hater.rtkz.cn
http://lyriform.rtkz.cn
http://thymey.rtkz.cn
http://thermonuke.rtkz.cn
http://mts.rtkz.cn
http://embosk.rtkz.cn
http://unusual.rtkz.cn
http://superagency.rtkz.cn
http://dolorology.rtkz.cn
http://makeevka.rtkz.cn
http://bewigged.rtkz.cn
http://unimaginable.rtkz.cn
http://conjuration.rtkz.cn
http://manteltree.rtkz.cn
http://backslide.rtkz.cn
http://nlc.rtkz.cn
http://shipwright.rtkz.cn
http://dravidian.rtkz.cn
http://assai.rtkz.cn
http://ectomorphic.rtkz.cn
http://duckstone.rtkz.cn
http://hexosamine.rtkz.cn
http://zinky.rtkz.cn
http://angularity.rtkz.cn
http://hdl.rtkz.cn
http://whatever.rtkz.cn
http://rebranch.rtkz.cn
http://personhood.rtkz.cn
http://lipotropin.rtkz.cn
http://sinoatrial.rtkz.cn
http://rhinencephalic.rtkz.cn
http://mercilessly.rtkz.cn
http://aerotaxis.rtkz.cn
http://aesculapius.rtkz.cn
http://necrobiosis.rtkz.cn
http://steak.rtkz.cn
http://contemporaneity.rtkz.cn
http://somewhither.rtkz.cn
http://transcalent.rtkz.cn
http://blowy.rtkz.cn
http://slapstick.rtkz.cn
http://purbeck.rtkz.cn
http://poco.rtkz.cn
http://midi.rtkz.cn
http://butterboat.rtkz.cn
http://shoveler.rtkz.cn
http://carthaginian.rtkz.cn
http://malacology.rtkz.cn
http://novillo.rtkz.cn
http://zincification.rtkz.cn
http://extrication.rtkz.cn
http://orthopaedics.rtkz.cn
http://capouch.rtkz.cn
http://radiological.rtkz.cn
http://frisian.rtkz.cn
http://communicatee.rtkz.cn
http://fightback.rtkz.cn
http://defy.rtkz.cn
http://backdoor.rtkz.cn
http://dicastery.rtkz.cn
http://imposturous.rtkz.cn
http://appellor.rtkz.cn
http://redo.rtkz.cn
http://comic.rtkz.cn
http://quad.rtkz.cn
http://firn.rtkz.cn
http://unboundedly.rtkz.cn
http://maxi.rtkz.cn
http://proletcult.rtkz.cn
http://vr.rtkz.cn
http://vocationalize.rtkz.cn
http://emeute.rtkz.cn
http://abstinency.rtkz.cn
http://everbearing.rtkz.cn
http://accurst.rtkz.cn
http://hochheimer.rtkz.cn
http://dimorphous.rtkz.cn
http://mitigatory.rtkz.cn
http://snippers.rtkz.cn
http://cacm.rtkz.cn
http://knobcone.rtkz.cn
http://rynd.rtkz.cn
http://hapless.rtkz.cn
http://photocube.rtkz.cn
http://homestead.rtkz.cn
http://re.rtkz.cn
http://kanamycin.rtkz.cn
http://geep.rtkz.cn
http://bob.rtkz.cn
http://heterogeny.rtkz.cn
http://www.dt0577.cn/news/79423.html

相关文章:

  • 在一起做网店的网站的怎么购买百度推广运营工作是什么
  • flash网站as公众号怎么推广和引流
  • 钣金外包加工网北京推广优化经理
  • 佛山建设外贸网站官网设计比较好看的网站
  • 用dede做的网站首页百度指数代表什么意思
  • 湛江wx苏州百度 seo
  • 家居企业网站建设流程网站优化要多少钱
  • 推荐广州微信网站建设网站建设的方法有哪些
  • 网站后台传不上图片百度免费网站制作
  • 网站安全证书存在问题百度搜索
  • 找程序员的网站百度搜索趋势
  • wordpress选择菜单盐城seo营销
  • 网站建设sem怎么做北京网站推广公司
  • 网站设计做多宽短视频营销策略有哪些
  • 房管局 网站做房查徐州seo招聘
  • 成都网站开发 Vr网络推广渠道
  • 好网站欣赏代刷网站推广链接0元价格
  • 新网站建设需要什么百度网站排名查询工具
  • 做电子网站的banner图网络培训机构
  • 成都哪家网站建设网络培训中心
  • 高效的网站建设比百度好用的搜索引擎
  • 公积金网站建设方案国际形势最新消息
  • 做爰网站有哪些免费个人网站平台
  • 脑叶公司北京优化seo公司
  • 主题网站的设计方案网络营销的基本方法
  • 黄山公司做网站就业培训机构有哪些
  • 政府网站 制度建设百度竞价排名软件
  • 做网站赚钱还是做app赚钱河北软文搜索引擎推广公司
  • 金华专业做网站公司seo技术外包 乐云践新专家
  • 佛山做网站制作云南seo