iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Spring@Value使用获取配置信息为null的操作
  • 766
分享到

Spring@Value使用获取配置信息为null的操作

2024-04-02 19:04:59 766人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

一、项目背景 1、介绍: 最近在SpringBoot项目中需要做一个阿里云OSS图片上传功能点,将OSS图片上传代码提取到公共工具类中,为了方便其他模块调用。 2、问题介绍 在公共工

一、项目背景

1、介绍:

最近在SpringBoot项目中需要做一个阿里云OSS图片上传功能点,将OSS图片上传代码提取到公共工具类中,为了方便其他模块调用。

2、问题介绍

在公共工具类中使用OSS一些自定义变量信息时会获取不到yml文件中定义的OSS参数。

3、问题分析

经过分析确定,公共工具类方法没有被spring 容器作为bean管理,所以获取不到配置文件信息。以前我们经常在controller层以及service层通过@Value获取配置文件信息,该层都被spring容器作为bean管理,所以可以轻松获取。

4、问题解决

新建一个参数获取类,使用@Component注解修饰类。

参见如下代码:

参数初始化:


@Component
public class AliyunOssConstants implements InitializingBean{ 
 
 @Value("${aliyunOss.file.endpoint}")
    private String endpoint;
 
 
    @Value("${aliyunOss.file.keyid}")
    private String accessKeyId;
 
    
    @Value("${aliyunOss.file.keysecret}")
    private String accessKeySecret;
 
    
    @Value("${aliyunOss.file.bg.bucketname}")
    private String bg_bucketname;
 
    
    @Value("${aliyunOss.file.filehost}")
    private String filehost;    
    public  static  String SPRING_FILE_ENDPOINT;
    public  static  String SPRING_FILE_ACCESS_KEY_ID;
    public  static  String SPRING_FILE_ACCESS_KEY_SECRET;
    public  static  String SPRING_FILE_BG_BUCKET_NAME;
    public  static  String SPRING_FILE_FILE_HOST;
 
 @Override
 public void afterPropertiesSet() throws Exception {
  SPRING_FILE_ENDPOINT = endpoint;
  SPRING_FILE_ACCESS_KEY_ID = accessKeyId;
  SPRING_FILE_ACCESS_KEY_SECRET = accessKeySecret;
  SPRING_FILE_BG_BUCKET_NAME = bg_bucketname;
  SPRING_FILE_FILE_HOST = filehost;
 } 
}

使用参数:


@Slf4j
public class AliyunOSSUtil { 
 private static String endpoint=AliyunOssConstants.SPRING_FILE_ENDPOINT;
 private static String accessKeyId=AliyunOssConstants.SPRING_FILE_ACCESS_KEY_ID;
 private static String accessKeySecret=AliyunOssConstants.SPRING_FILE_ACCESS_KEY_SECRET;
 private static String bucketname=AliyunOssConstants.SPRING_FILE_BG_BUCKET_NAME;
 private static String filehost=AliyunOssConstants.SPRING_FILE_FILE_HOST; 
    // 阿里云OSS上传文件方法
}

@Value取不到值的原因

在springboot中想获取配置文件中的值,一般的方法为


@Value("${tag}")
private String tagValue;

但是取值时,有时这个tagvalue为NULL,可能原因有:

1.类没有加上@Component(或者@service等)


@Component //遗漏
class TestValue{
    @Value("${tag}")
    private String tagValue;
}

2.类被new新建了实例,而没有使用@Autowired


@Component 
class TestValue{
    @Value("${tag}")
    private String tagValue;
} 
class Test{
    ...
    TestValue testValue = new TestValue()

正确方式:

1.使用@Autowired注入

2.在controller层注值

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Spring@Value使用获取配置信息为null的操作

本文链接: https://www.lsjlt.com/news/130025.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作