首页 > 其他分享 >@ConfigurationProperties注解获取为null的问题或者获取不到值的问题

@ConfigurationProperties注解获取为null的问题或者获取不到值的问题

时间:2024-08-03 17:27:08浏览次数:9  
标签:modifiers name 获取 ConfigurationProperties static && 修饰 null method

结论:

set方法不能被static修饰、不能被private修饰、不能被protect修饰,不能被abstract修饰,不能是Object和Class

理论依据:

1、springboot源码 JavaBeanBinder 文件下的 isCandidate方法

private boolean isCandidate(Method method) {
            int modifiers = method.getModifiers();
            return !Modifier.isPrivate(modifiers) && !Modifier.isProtected(modifiers) && !Modifier.isAbstract(modifiers) && !Modifier.isStatic(modifiers) && !method.isBridge() && !Object.class.equals(method.getDeclaringClass()) && !Class.class.equals(method.getDeclaringClass()) && method.getName().indexOf(36) == -1;
        }

2、static 修饰获取不到值的原因

  1. 在Spring框架中,‌@Value注解用于注入配置文件中的属性值到JavaBean中。‌但是,‌如果set方法被static修饰,‌那么这个方法就变成了类的方法,‌而不是对象的方法。‌Spring的依赖注入机制是通过反射来调用对象的setter方法,‌而不是类的方法。‌因此,‌当一个类的set方法被static修饰时,‌Spring无法通过反射找到对应的setter方法来注入值,‌从而导致无法获取到值。‌
  2. 非spring环境下,静态方法是属于类的,‌而不是属于任何特定的对象实例。‌当你尝试通过对象来调用一个静态方法时,‌实际上你是在直接调用类的方法,‌而不是通过对象实例来调用。‌这违反了面向对象编程的基本原则,‌即一切对象都应该通过其实例来进行操作。‌
问题描述

通过get方法获取的属性值一致为null 

@Component
@ConfigurationProperties(prefix = "test")
public class Config
{
    /** 项目名称 */
    private static String name;

    public String getName()
    {
        return name;
    }

    public static  void setName(String name)
    {
        Config.name = name;
    }
}

#application.yml配置

test:
   name: hello
解决方案

去掉static修饰词

 public void setName(String name)
    {
        Config.name = name;
    }

标签:modifiers,name,获取,ConfigurationProperties,static,&&,修饰,null,method
From: https://blog.csdn.net/qq_34979689/article/details/140892506

相关文章

  • 如何获取列中负数最多的组并添加另一个条件来过滤组?
    这是对此已接受的答案的扩展。我的数据帧:importpandasaspddf=pd.DataFrame({'a':[-3,-1,-2,-5,10,-3,-13,-3,-2,1,2,-100],'b':[1,2,3,4,5,10,80,90,100,99,1,12]})预期输出:ab5......
  • python3解析wav文件获取dtmf值
    操作系统:Windows10_x64Python版本:3.9.2从事FreeSwitch相关工作,大概率会遇得到DTMF,DTMF的传递方式有三种:In-bandRFC2833SIP-INFO使用RFC2833或SIP-INFO传递方式的DTMF,FreeSwitch可以在日志中打印出来,但遇到inband模式的DTMF,FreeSwitch的日志就打印不出来了。如果是会议......
  • shell获取敏感词接口json数据更新时重启nginx+lua环境、一个逐步删除服务器上文件夹的
    一、shell获取敏感词接口json数据如有更新重启nginx+lua环境    因为工作需要,需要写一个shell脚本获取对应接口的数据(其它管理后台控制的敏感词库)。因为当前平台是nginx+lua脚本,重装加载敏感词需要重启nginx.实现起来也很简单,第一点,需要对获取的json数据进行分析,shell......
  • 易优CMS模板标签beafter上下篇获取下一篇内容
    【基础用法】标签:beafter描述:获取当前文档上一篇、下一篇内容。用法:{eyou:beafterget='pre'}<ahref="{$field.arcurl}"title="{$field.title}">上一篇:{$field.title}</a>{eyou:else/}上一篇:暂无{/eyou:beafter}{eyou:beafterget='next&......
  • javascript学习 - DOM 元素获取、属性修改
    什么是WebAPIWebAPI是指网页服务器或者网页浏览器的应用程序接口。简单来讲,就是我们在编写JavaScript代码时,可以通过WebAPI来操作HTML网页和浏览器。WebAPI又可以分为两类:DOM(文档对象模型)BOM(浏览器对象模型)DOM(DocumentObjectModel),即文档对象模型,主要用......
  • python如何获取期权行情数据
    最近几天股指期权日内趋势比较明显,但是期权行情数据不易获得,好在akshare库为提供了一个便捷的途径来获取期权行情数据。本文将介绍如何使用Python和akshare库来获取交易所金融期权标的物当日行情数据、返回品种所有合约以及期权行情分钟数据。1.获取上海证券交易所金融期......
  • java如何避免NullPointerException(空指针异常,NPE)
    本文将简单的介绍nep以及如何避免npe1.npe简介空指针异常(NullPointerException)意思是指java中的异常类。当应用程序试图在需要对象的地方使用null时,抛出该异常。这种情况包括:调用null对象的实例方法。访问或修改null对象的字段。将null作为一个数组,获得其长度......
  • PgStatement的executeCachedSql(String sql, int flags, String @Nullable [] column
    方法代码如下:privatebooleanexecuteCachedSql(Stringsql,intflags,String@Nullable[]columnNames)throwsSQLException{//第一部分PreferQueryModepreferQueryMode=connection.getPreferQueryMode();booleanshouldUseParameterized=false;......
  • 如何使用Python代码获取Power Bi Visual Level数据
    我有一个Powerbi报告,托管在本地报告服务器上。现在我想使用python代码检索视觉级别数据。例如,我有一个卡片视觉效果,显示为“100”,这个“100”是根据度量计算的,对于某些视觉效果,该值直接来自数据集中的列值。现在我想检索测量值为“100”,而且我还需要直接来自python代......
  • 一次获取最多 5 个逗号分隔值
    如何在API路径中动态添加值?我正在从APIjson响应中提取一些值,如下所示-values=['MP55','MP50','MP51','MP54','MP58','MP59','MP60','MP60','MP61','MP62','MP50&#......