当前位置: 首页 > news >正文

@Value的注入与静态注入 与 组件中静态工具类的注入

一、@Value 的注入

首先时一般的注入,例如你的配置文件中:

vod: access-key: 123456

那么,你就可以在你的方法中进行注入:

@Component
public class VodService{@Value("${vod.access-key}")private String accessKey;
} 

不过这里要注意一点,如果不加${}的话,注入的就是引号中的字符串

二、@Value 的静态属性注入

1. @Component 搭配 @Value + set方法

@Component
public class VodService{private static String accessKey;@Value("${vod.access-key}")public void setAccessKey(String accessKey){VodService.accessKey = accessKey;}
} 

2. @ConfigurationProperties + @Component + set方法

与上一个方法类似,只是可以能够让你在要注入的属性多时,少写点代码
prex 指明前缀vod,后面的accessKey 要注意配置文件与该属性保持一致

@ConfigurationProperties(prex = "vod")
@Component
public class VodService{private static String accessKey;public void setAccessKey(String accessKey){VodService.accessKey = accessKey;}
} 

3. @PostConstruct + @Component 方法

假如你已经可以拿到了A对象中的属性(@Value注入),你可以同步将其注入到B类,或 初始化C类
类初始化的调用顺序为:Constructor -> @Autowired -> @Value -> @PostConstruct

@Component
public Class A{@Value("${vod.a}")private String a;@PostConstructpublic void initVod(){VodService.init(a);}
}
public class VodService{private static String accessKey;public static init(String accessKey){VodService.accessKey = accessKey;}
} 

三、common组件中(无启动类)中的静态注入

与前文中使用@PostConstruct类似

@Component
public class YourApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {@Overridepublic void initialize(ConfigurableApplicationContext applicationContext) {// 读取配置文件中的参数Environment env = applicationContext.getEnvironment();String accessKey = env.getProperty("vod.access-key");String secretKey = env.getProperty("vod.secret-key");// 初始化静态字段VodUtil.init(accessKey, secretKey);}
}

resource目录下的 META-INF/spring.factories 文件

org.springframework.context.ApplicationContextInitializer=com.example.YourApplicationContextInitializer
http://www.lryc.cn/news/158982.html

相关文章:

  • Qt--自定义搜索控件,QLineEdit带前缀图标
  • 8月AI实战:工业视觉缺陷检测
  • Kubernetes的ExternalName详解
  • 使用 Pandera 的 PySpark 应用程序的数据验证
  • README
  • Excel周报制作
  • Qt QtCreator 所有官方下载地址
  • C++包含整数各位重组
  • 数学建模--模型总结(5)
  • JavaScript 中的原型到底该如何理解?
  • 【MySQL基础】事务隔离03
  • 2023高教社杯数学建模C题思路分析 - 蔬菜类商品的自动定价与补货决策
  • 【MySQL】初见数据库
  • 选择合适的帧率和分辨率:优化RTSP流视频抓取(java)
  • HTTP协议都有哪些方法?
  • 数学建模--非整数规划求解的Python实现
  • LeetCode 48题: 旋转图像
  • 集成快递物流平台(快递100、快递鸟、闪送)连通多个应用
  • 搭建hadoop集群的常见问题及解决办法
  • virtualbox centos 使用NAT模式上网
  • 蓝桥杯官网填空题(梅森素数)
  • IBM Spectrum LSF Application Center 以应用程序为中心的工作负载提交和管理
  • 同步FIFO的verilog实现(2)——高位扩展法
  • 数据结构与算法面试
  • android studio cmake生成.a文件(静态库)及调用(c c++)静态库.a
  • 本地部署体验LISA模型(LISA≈图像分割基础模型SAM+多模态大语言模型LLaVA)
  • SpotBugs代码检查:instanceof总是返回true(BC_VACUOUS_INSTANCEOF)
  • Redis的Java客户端:Jedis入门
  • 【完整代码】2023数学建模国赛C题代码--蔬菜类商品的自动定价与补货决策
  • idea:java: Compilation failed: internal java compiler error