springboot如何静态加载@configurationProperties

作者:奇怪的守护神 时间:2021-12-13 16:20:13 

平时开发,基本不改变的常量我们都放在了配置项里,如properties或yml文件里,这个时候为了只在启动时候进行加载。如何做呢?

我们通过springboot的 @ConfigurationProperties 注解和static静态化对应属性进行。

但如果操作不当,会导致加载的数据为空,至于为什么,看下面的案例。

1、错误案例

//错误1:get\set都是静态方法
@Component
@ConfigurationProperties(prefix = "mobile")
public class MobileConfig
{
   public static Integer preview;

public static Integer getPreview() {
       return preview;
   }

public static void setPreview(Integer preview) {
       MobileConfig.preview = preview;
   }
}
//错误2:跟第一种差不多,只是用了lombok注解代替了get\set方法,get\set也都是静态方法
@Data
@Component
@ConfigurationProperties(prefix = "mobile")
public class MobileConfig
{
   public static Integer preview;
}

2、成功案例

@Component
@ConfigurationProperties(prefix = "mobile")
public class MobileConfig
{
   public static Integer preview;

public static Integer getPreview() {
       return preview;
   }

public void setPreview(Integer preview) {
       MobileConfig.preview = preview;
   }
}
@Data
@Component
@ConfigurationProperties(prefix = "mobile")
public class MobileConfig
{
   public static Integer preview;

public void setPreview(Integer preview) {
       MobileConfig.preview = preview;
   }
}                        

3、原因

spring在注入的时候,需要调用set 方法,如果这个方法是静态方法,就没法动态注入了,所以只需要把get方法加入static作为静态方法即可,如果用了@Data,只需要重写set方法即可。

来源:https://blog.csdn.net/qq_24298751/article/details/126019483

标签:springboot,静态加载,@configurationProperties
0
投稿

猜你喜欢

  • JavaEE开发之SpringMVC中的自定义消息转换器与文件上传

    2023-11-24 19:36:02
  • Android使用插件实现代码混淆

    2023-02-25 07:13:10
  • Java Bean Validation使用示例详解

    2023-07-19 07:05:26
  • 设计模式系列之组合模式及其在JDK和MyBatis源码中的运用详解

    2022-12-27 12:56:57
  • SpringBoot解决Required String parameter xxx is not present问题

    2021-08-08 12:53:15
  • 自己动手写的mybatis分页插件(极其简单好用)

    2023-11-01 18:12:09
  • Android开发实现拨打电话与发送信息的方法分析

    2023-06-19 07:09:13
  • Spring框架应用的权限控制系统详解

    2023-11-11 14:17:11
  • JAVA十大排序算法之桶排序详解

    2022-11-08 01:07:47
  • Springboot基础学习之初识SpringBoot

    2022-08-18 08:48:59
  • Android registerForActivityResult动态申请权限案例详解

    2021-10-05 17:40:42
  • java判断今天,昨天,前天,不能用秒间隔的简单实例

    2021-07-27 23:01:35
  • java进阶之了解SpringBoot的配置原理

    2022-05-08 05:10:36
  • Android中的设计模式

    2022-09-13 06:33:21
  • SpringBoot+Redis实现数据字典的方法

    2022-08-03 14:22:29
  • Java IO流之节点流与字符流的相关知识总结

    2021-12-31 06:46:15
  • IntelliJ IDEA如何设置JDK版本

    2022-08-27 07:46:03
  • C#复杂XML反序列化为实体对象两种方式小结

    2022-08-05 16:50:45
  • 教你用Java GUI实现文本文件的读写

    2023-05-25 06:47:13
  • java POI解析Excel 之数据转换公用方法(推荐)

    2023-06-10 11:04:53
  • asp之家 软件编程 m.aspxhome.com