通过工具类读取配置文件,用getter还是静态变量的思考
在做上传oss模块的时候,将id,秘钥啥的属性写在了配置文件里面,想通过一个工具类来获取里面的值。
在学习的时候,用的@Value获取配制文件中的值,但是@value不能声明在静态变量上。所有又定义了静态变量,有实现了InitializingBean接口,重写了afterPropertiesSet()方法,在方法里进行静态变量赋值。
这个时候有人问,为啥不直接用getter方法。
我觉得,因为一般工具类使用都是通过类名来调用,如果使用getter,还需创建对象,多处地方用到,多处就得创建对象,造成资源浪费。
package com.atguigu.oss.utils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
//项目启动,spring接口,加载之后,执行接口的方法<implements InitializingBean 的afterPropertiesSet()>
@Component
public class ConstantPropertiesUtils implements InitializingBean {
//读取配置文件
@Value("${aliyun.oss.file.endpoint}")
private String endpoint;
@Value("${aliyun.oss.file.keyid}")
private String keyid;
@Value("${aliyun.oss.file.keysecret}")
private String keysecret;
@Value("${aliyun.oss.file.bucketname}")
private String bucketname;
//这样写就是因为@Value不能给静态变量赋值,工具类直接用类名调用,new对象浪费资源,所以这里没用getter方法而用的静态变量-----------------------
public static String END_POINT;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;
//定义公共的静态常量
@Override
public void afterPropertiesSet() throws Exception {
END_POINT = endpoint;
ACCESS_KEY_ID = keyid;
ACCESS_KEY_SECRET = keysecret;
BUCKET_NAME = bucketname;
}
}
本文来自博客园,作者:NeverLateThanBetter,转载请注明原文链接:https://www.cnblogs.com/do-it-520/p/16555673.html
韶华易逝,不能虚度年华。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?