@value 的属性自动注入以及static,final修饰如何处理

20 篇文章 5 订阅 ¥9.90 ¥99.00

目录

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean popluateBean 处理autowire、value。initializeBean初始化bean。

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean  里面的方法就是处理@Autowire 和 @Value的

 findAutowiringMetadata找出autowire,value的需要注入属性值的metadata。ReflectionUtils.doWithLocalFields、ReflectionUtils.doWithLocalMethods 通过遍历找出AutowiredAnnotation,Modifier.isStatic 判断并且排除static的filed,和method,仅仅打了warn日志Autowired annotation is not supported on static fields:

org.springframework.beans.factory.annotation.InjectionMetadata.InjectedElement#inject

重点:属性是通过反射进行设置的,ReflectionUtils.makeAccessible(field) 该方法会将final修饰的字段属性访问符设置为true,后面就可以通过field.set 进行设置需要的值。

因此如果我们针对static 字段进行 @Value或者@Autowired可以通过如下方式



 方法和字段

  • org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean popluateBean 处理autowire、value。initializeBean初始化bean。

Object exposedObject = bean;
		try {
			populateBean(beanName, mbd, instanceWrapper);
			if (exposedObject != null) {
				exposedObject = initializeBean(beanName, exposedObject, mbd);
			}
		}
  • org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean  里面的方法就是处理@Autowire 和 @Value的


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值