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

 更新时间:2021年07月07日 16:50:49   作者:CoderYin  
这篇文章主要介绍了Spring@Value使用获取配置信息为null的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

一、项目背景

1、介绍:

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

2、问题介绍

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

3、问题分析

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

4、问题解决

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

参见如下代码:

参数初始化:

@Component
public class AliyunOssConstants implements InitializingBean{ 
 /**
  * 阿里云OSS地域节点
  */
 @Value("${aliyunOss.file.endpoint}")
    private String endpoint;
 
 /**
  * 阿里云OSSaccessKeyId
  */
    @Value("${aliyunOss.file.keyid}")
    private String accessKeyId;
 
    /**
     * 阿里云OSSaccessKeySecret
     */
    @Value("${aliyunOss.file.keysecret}")
    private String accessKeySecret;
 
    /**
     * 阿里云OSSbucket名称
     */
    @Value("${aliyunOss.file.bg.bucketname}")
    private String bg_bucketname;
 
    /**
     * 阿里云OSSBucket域名
     */
    @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层注值

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java开发之MD5加密算法的实现

    java开发之MD5加密算法的实现

    本篇文章介绍了,java开发之MD5加密算法的实现。需要的朋友参考下
    2013-05-05
  • JDK  keytool证书工具功能代码解析

    JDK keytool证书工具功能代码解析

    这篇文章主要介绍了JDK keytool证书工具功能代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • MyBatis-Plus联表查询以及分页代码实例

    MyBatis-Plus联表查询以及分页代码实例

    在开发中遇到了一个问题,需要进行联表查询并进行分页,因为不想自己来写分页,所以还是依靠MybatisPlus来实现想要的功能,下面这篇文章主要给大家介绍了关于MyBatis-Plus联表查询以及分页的相关资料,需要的朋友可以参考下
    2023-06-06
  • 把Jar文件转成exe安装文件的实现方法

    把Jar文件转成exe安装文件的实现方法

    下面小编就为大家带来一篇把Jar文件转成exe安装文件的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • Java并发编程ThreadLocalRandom类详解

    Java并发编程ThreadLocalRandom类详解

    这篇文章主要介绍了Java并发编程ThreadLocalRandom类详解,通过提出问题为什么需要ThreadLocalRandom展开详情,感兴趣的朋友可以参考一下
    2022-06-06
  • SpringSecurity自定义登录成功处理

    SpringSecurity自定义登录成功处理

    这篇文章主要为大家详细介绍了SpringSecurity自定义登录成功处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • springboot使用war包部署到外部tomcat过程解析

    springboot使用war包部署到外部tomcat过程解析

    这篇文章主要介绍了springboot使用war包部署到外部tomcat过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 解决程序包org.springframework.test.context不存在

    解决程序包org.springframework.test.context不存在

    这篇文章主要介绍了解决程序包org.springframework.test.context不存在的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java @PostMapping和@GetMapping方法使用详解

    Java @PostMapping和@GetMapping方法使用详解

    这篇文章主要介绍了Java @PostMapping和@GetMapping方法使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03
  • Spring Boot配置过滤器的2种方式示例

    Spring Boot配置过滤器的2种方式示例

    这篇文章主要给大家介绍了关于Spring Boot配置过滤器的2种方式,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09

最新评论