spring中修改注解属性_spring静态属性注入问题简要分析

本文准备探讨一下spring静态属性注入相关的问题,但是首先我们必须明确,不推荐通过spring对静态属性进行注入。静态属性属于class类的属性,通过实例对类属性进行修改,是spring框架不推荐的操作方式,所以spring不提供静态属性的直接注入。如遇到需要在utils里面使用静态属性的情况,可以在spring中注册bean,在通过上下文对象调用getBean的方式获取并使用。

可能你会说,如果我非要对基于spring框架对静态属性进行注入动作呢,

这里我们可以通过一些特殊的操作,实现此类注入,希望能让大家对spring注入有些更深的了解,比较常见的方法有以下几种:

一、@PostConstruct方式实现:

为了实现对静态的属性,引入@PostConstruct注解,此注解被用来修饰一个非静态的void()方法。注解的方法会在项目启动的时候执行,也可以理解为在spring容器启动的时候执行,并且只会被服务器执行一次。具体执行时间在构造函数执行生成实例,bean的属性注入完成之后。一般用于执行一些数据的常规初始化动作。所以我们可以通过以下方式实现静态属性的注入

d1a5c91c0e699fbedb12d9f1806ba9df.png

在启动springboot的时候,在init方法里面打上断点,会得到如下结果:

022d082e1075403c91ef85ed0d1a1d55.png

b544b2334c852b121ca7bf9e240acd35.png

我们可以发现,在init方法执行之前url属性已经完成注入,在init方法执行完成之后,callBackUrl成功获取到了我们需要注入的值,注入成功

二、通过set方法进行注入

dd1cadcadd7159dc615a34d02a8d9bc1.png

同样在赋值操作进行的操作打上断点,会得到如下结果

4d9628347da927b73834828336fed8a2.png

5ea2248574f5b79366af4d798da93780.png

callBackUrl属性成功注入,这里需要注意的点在于,set方法不能是静态的,否则也会注入失败,相当于重写了setter方法,spring把callBackUrl当成了非静态属性进行处理。

三、xml注入

xml注入其实有两种常见实现,主要是把类作为一个bean在xml中进行注册,一种实现是在注册的同时,定义init-method实现赋值操作,有点像PostConstruct方式实现。另外一种实现和第二种方式也很相似,主要是xml注册bean,然后重写set方法,重写成非静态的。这里就不一一说明了,大家可以自己进行尝试。

以上就是常用的静态属性注入的三种方式了,这里我们还是要说一句,不推荐对静态属性进行注入动作,用实例去修改class类属性,容易引发其他问题,在编程过程中,应该尽量减少这种操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值