springBoot配置文件(三)获取自定义的变量

一、static静态变量与非静态变量

如在application.properties中配置变量:

value: 127.0.0.1:8081
staticvalue: 127.0.0.1:8081

  获取:

@RestController
@RequestMapping("/getvalue")
public class getvalue {

    @Value("${value}")
    private String value;

    private static String staticvalue;

    @Value("${staticvalue}")
    public void setStaticvalue(String staticvalue){
        this.staticvalue = staticvalue;
    }

    @RequestMapping(method = RequestMethod.GET,value="/getvalue")
    public String getvalue1(){
        return "this:"+value;
    }

    @RequestMapping(method = RequestMethod.GET,value="/getstaticvalue")
    public static String getvalue2(){
        return "this:"+staticvalue;
    }
}

二、获取中文配置

自定义值如果是中文,获取可能会乱码。需要设置读取的编码:

spring项目:在springContext_service.xml文件中设置字符编码:

<context:property-placeholder location="classpath:config/param.properties" ignore-unresolvable="true" file-encoding="UTF-8"/>
	

springboot项目:首先,从配置文件读取汉字乱码的真正原因:

application.properties中文乱码是因为spring boot项目默认的加载配置文件application是

通过字符集ISO-8859-1载入的;解决方法:

1、方法1:在总application.properties文件中设置字符编码:

#设置编码
banner.charset=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.messages.encoding=UTF-8
spring.freemarker.charset=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.forcr=true
spring.http.encoding.enabled=true

2、方法2:

创建一个新的properties配置文件,如:business.properties,设置文件编码格式为UTF-8,

引入配置并指定字符集,注意:这种方式针对application.properties是不行的。
然后在spring boot项目随便启动类或者需要的类上加上下面注解,获取的中文便不会乱码

@PropertySource(value = {
        "classpath:business.properties"
}, encoding = "UTF-8")

3、方法3: 将application.properties改为application.yml

4、方法4:网上常说的方法如下图设置

还说前提application.properties文件编码为UTF-8,但是我试了有时候可以有时候不行,也不知道为啥;其实上述的办法就是将中文转换为Unicode码,再在idea编辑器中转换为中文。

实际存放的还是Unicode码。所以对于生产的乱码,如果用这种方法,你还不如直接把汉字

转为Unicode码放进生产的配置文件里;比如存储:星期一:

demo.day = 星期一

在线转成unicode编码

在线 Unicode 编码转换 | 菜鸟工具 (runoob.com)

则改成demo.day = \u661f\u671f\u4e00

三、获取非spring托管的配置

spring托管的Bean(使用@Compont、@Service等等spring bean的注解)类中可以使用@Value获取,非spring托管的是获取不到的,可以

1、使用Environment
Environment env = ApplicationContextProvider.getBean(Environment.class);
String property = env.getProperty("spring.application.name");

2、使用Nacos,并使用Nacos自带的获取配置的工具类

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w_t_y_y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值