Java 工具类Util中的@Value注解注入为空解决方案
侧边栏壁纸
  • 累计撰写 138 篇文章
  • 累计收到 691 条评论

Java 工具类Util中的@Value注解注入为空解决方案

萧瑟
2022-12-09 / 0 评论 / 14 阅读 / 正在检测是否收录...

原因分析

在后端开发当中我们可能会使用到工具类,而一般的工具类中的方法都是静态方法。而@Value注解只能给普通变量注入值,不能直接给静态变量赋值。

知识拓展

静态变量(即类变量)是一个类的属性,而不是对象的属性。spring依赖注入是基于对象层面上的。

static变量在对象创建前就分配过内存了,而spring的注入是在创建对象的时候注入的。

解决方案

可以提前定义一个set方法,这个方法是非静态的。

@Slf4j
@Component
public class xxxUtil {
  /**
   * Url 
   */
  private static String url;
  /**
   * 注入 配置文件值 
   *
   * @param oamUrl 配置文件值 
   */
  @Value("${server.url}")
  public void setOamUrl(String url) {
    xxxUtil.url = url;
  }
}

评论 (0)

取消