疫情期间找工作确实有点难度,想拿到满意的薪资,确实要点实力啊!
面试官:Spring中的@Value用过么,介绍一下
我:@Value可以标注在字段上面,可以将外部配置文件中的数据,比如可以将数据库的一些配置信息放在配置文件中,然后通过@Value的方式将其注入到bean的一些字段中
面试官:那就是说@Value的数据来源于配置文件了?
我:嗯,我们项目最常用更多就是通过@Value来引用Properties文件中的配置
面试官:@Value数据来源还有其他方式么?
我:此时我异常开心,刚好问的我都研究过,我说:当然有,可以将配置信息放在db或者其他存储介质中,容器启动的时候,可以将这些信息加载到Environment中,@Value中应用的值最终是通过Environment来解析的,所以只需要扩展一下Environment就可以实现了。
面试官:不错嘛,看来你对spring研究的还是可以,是不是喜欢研究spring源码?
我:笑着说,嗯,平时有空的时候确实喜欢捣鼓捣鼓源码,感觉自己对spring了解的还可以,不能算精通,也算是半精通吧
面试官:看着我笑了笑,那@Value的注入的值可以动态刷新么?
我:应该可以吧,我记得springboot中有个@RefreshScope注解就可以实现你说的这个功能
面试官:那你可以说一下@RefreshScope是如何实现的么,可以大概介绍一下?
我:嗯。。。这个之前看过一点,不过没有看懂
面试官:没关系,你可以回去了再研究一下;你期望工资多少?
我:3万吧
面试官:今天的面试还算是可以的,不过如果@RefreshScope能回答上来就更好了,这块是个加分项,不过也确实有点难度,2.5万如何?
我:(心中默默想了想:2.5万,就是一个问题没有回答好,砍了5000,有点狠啊,我要回去再研究研究,3万肯定是没问题的),我说:最低2.9万
面试官:那谢谢你,今天面试就到这里,出门右拐,不送!
我有个好习惯,每次面试回去之后,都会进行复盘,把没有搞定的问题一定要想办法搞定,这样才不虚。
这次面试问题如下
-
@Value的用法
-
@Value数据来源
-
@Value动态刷新的问题
下面我们一个个来整理一下,将这几个问题搞定,助大家在疫情期间面试能够过关斩将,拿高薪。
@Value的用法
系统中需要连接db,连接db有很多配置信息。
系统中需要发送邮件,发送邮件需要配置邮件服务器的信息。
还有其他的一些配置信息。
我们可以将这些配置信息统一放在一个配置文件中,上线的时候由运维统一修改。
那么系统中如何使用这些配置信息呢,spring中提供了@Value注解来解决这个问题。
通常我们会将配置信息以key=value的形式存储在properties配置文件中。
通过@Value("${配置文件中的key}")来引用指定的key对应的value。
@Value使用步骤
步骤一:使用@PropertySource注解引入配置文件
将@PropertySource放在类上面,如下