java全局变量默认值_spring中使用@Value设置全局变量默认值

前几天在开发过程中遇到一个使用 spring 的 @Value 给类的全局变量设置默认值不成功的问题,最后通过查资料也是轻松解决,但是发现使用@Value也是有多种多样的方式,今天总算是将开发任务结束,于是打算回过头来再去研究研究这个问题。

一、首先展示两种我这边的错误写法。让大家引以为戒。

1. 在给类的全局静态变量设置默认值时,@Value 不能直接写在变量上方。

27bf8f8b5cebeb3fec680e28c010698c.png

2.将 @Value 加到set方法上时,不能使用 static 修饰

418001330e177138e759836ca02a510e.png

3.使用 @Value 时不能用#代替$

dbe8271f04b51fe96aa30997763fc4fb.png

以上几种错误就是我在开发过程中出现的一些比较容易出现的错误,下面就是我在查询资料时学习到@Value的一些使用方法。

二、配置 .properties 文件

使用 @Value 我们一般会将一些经常容易修改,但是在程序中不变的变量配置到配置文件中,一般是 .properties 文件,下面是三种不同的方式去将  .properties 文件引入到项目中。

1. 在spring 的配置文件中使用  标签,其中 loaction 为配置文件路径 file-encoding 为配置编码格式

9c92f7fd2594c2bed079a5545f1504c8.png

2. 在spring 的配置文件中配置bean

b92ce5aeffcfbd056ebfc983cc9663be.png

3. 第三种则是使用 @PropertySource 注解将配置文件加载到某一个类中

c81a469d9f88c20eb60f2402587b0cf1.png

三、@Value 注解的使用

1. 非静态变量使用 @Value

①. 将@Value 加在变量上

510abb3ac1ddfd8d78a6532402b90dcb.png

②. 将@Value 加在 set 方法上

f4cb445870fab155a3545802702bfdc8.png

2. 静态变量使用 @Value

静态变量在使用 @Value时,只能加在 set 方法上面,并且set方法不能是静态方法

babfde1e51d7005dfe97b63559a96762.png

四、# 符与 $ 符的区别

1. @Value("#{}")

①. 直接给变量赋值

199d5bfd15cd451ccc63708ead3f3bea.png

②. 对赋值的字符串进行一些操作

cab5c10adedc73876c0a3d7c5ba91b09.png

③. 如果 .properties 是以bean的方式注入的,则可以使用bean的id去获取属性

41ddf494cfe612bf259a054c15999175.png

④. 上面的情况还可以这么写

ae803032d138a7d7c2088971b27db698.png

⑤. 表达式

36a6b5f2084c8c5835ab93cbdc786f59.png

2. @Value("${}")

①. 获取普通配置文件中的属性

ab21a5caa235ba0582cc6dd70d13d6f5.png

②. 如果配置文件中没有获取到属性值则使用默认值

5f5105f919cc2e7d90b3eccb4b287d9a.png

3. 其他无符号用途

①. 文件资源

ff036c0f818d9ddbe194c0cd19833506.png

②. 网站资源

6641ea2420de90e0c420f9874f062eb3.png

五、在引入 .properties 文件时出现的 编码问题

在上面学习开始时我还遇到使用 @Value 注解设置默认值为中文时出现的乱码问题,我在网上百度出来好多博客几乎大同小异都是下面两种解决方案,以及修改 IDE 的编码格式等等:

1.修改注解

005163b89bf7af9689197b30a0b3400b.png

2. 修改配置文件

184859ba23d041ba57e6c0a9c97085af.png

但是,在我实践的过程中发现,这两种方式都不能生效,不知道是因为我在什么地方没有添加什么配置还是什么原因,如果有知道的小伙伴可以给我留言。我在测试时发现 .properties文件在读取时,无论 IDE 将文件设置为什么格式,都会将内容转换为 ISO-8859-1 的编码。于是我在获取到默认值之后再将之转换为 UTF-8.

dd4f32148d20f9de688bb1fe13538526.png

还有一种方式就是在.properties文件中写中文时直接转换成Unicode 编码,使用 @Value 时就不用做其他转码操作。

47e51a0d48a386895b31f0ab564f5dd0.png

-------------------- END ---------------------

最后附上作者的微信公众号地址和博客地址

公众号:wuyouxin_gzh

Herrt灬凌夜:https://www.cnblogs.com/wuyx/

版权说明:欢迎以任何方式进行转载,但请在转载后注明出处!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值