spring中使用@Value设置全局变量默认值
前几天在开发过程中遇到一个使用 spring 的 @Value 给类的全局变量设置默认值不成功的问题,最后通过查资料也是轻松解决,但是发现使用@Value也是有多种多样的方式,今天总算是将开发任务结束,于是打算回过头来再去研究研究这个问题。
一、首先展示两种我这边的错误写法。让大家引以为戒。
1. 在给类的全局静态变量设置默认值时,@Value 不能直接写在变量上方。
2.将 @Value 加到set方法上时,不能使用 static 修饰
3.使用 @Value 时不能用#代替$
以上几种错误就是我在开发过程中出现的一些比较容易出现的错误,下面就是我在查询资料时学习到@Value的一些使用方法。
二、配置 .properties 文件
使用 @Value 我们一般会将一些经常容易修改,但是在程序中不变的变量配置到配置文件中,一般是 .properties 文件,下面是三种不同的方式去将 .properties 文件引入到项目中。
1. 在spring 的配置文件中使用 <context:property-placeholder/> 标签,其中 loaction 为配置文件路径 file-encoding 为配置编码格式
2. 在spring 的配置文件中配置bean
3. 第三种则是使用 @PropertySource 注解将配置文件加载到某一个类中
三、@Value 注解的使用
1. 非静态变量使用 @Value
①. 将@Value 加在变量上
②. 将@Value 加在 set 方法上
2. 静态变量使用 @Value
静态变量在使用 @Value时,只能加在 set 方法上面,并且set方法不能是静态方法
四、# 符与 $ 符的区别
1. @Value("#{}")
①. 直接给变量赋值
②. 对赋值的字符串进行一些操作
③. 如果 .properties 是以bean的方式注入的,则可以使用bean的id去获取属性
④. 上面的情况还可以这么写
⑤. 表达式
2. @Value("${}")
①. 获取普通配置文件中的属性
②. 如果配置文件中没有获取到属性值则使用默认值
3. 其他无符号用途
①. 文件资源
②. 网站资源
五、在引入 .properties 文件时出现的 编码问题
在上面学习开始时我还遇到使用 @Value 注解设置默认值为中文时出现的乱码问题,我在网上百度出来好多博客几乎大同小异都是下面两种解决方案,以及修改 IDE 的编码格式等等:
1.修改注解
2. 修改配置文件
但是,在我实践的过程中发现,这两种方式都不能生效,不知道是因为我在什么地方没有添加什么配置还是什么原因,如果有知道的小伙伴可以给我留言。我在测试时发现 .properties 文件在读取时,无论 IDE 将文件设置为什么格式,都会将内容转换为 ISO-8859-1 的编码。于是我在获取到默认值之后再将之转换为 UTF-8.
还有一种方式就是在.properties 文件中写中文时直接转换成Unicode 编码,使用 @Value 时就不用做其他转码操作。
-------------------- END ---------------------
最后附上作者的微信公众号地址和博客地址
公众号:wuyouxin_gzh
Herrt灬凌夜:https://www.cnblogs.com/wuyx/
版权说明:欢迎以任何方式进行转载,但请在转载后注明出处!
posted on 2018-08-29 15:56 Herrt灬凌夜 阅读(17295) 评论(0) 编辑 收藏 举报