通过工具类读取配置文件,用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;
   }
}
posted @   NeverLateThanBetter  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示