spring-boot 如何在普通类里面进行依赖注入

本文探讨了在Spring-Boot中如何在非@Component注解的普通类中实现依赖注入,如ZkManager。面临的问题是,由于ZkManager不被Spring容器管理,导致@ConfigurationProperties注解的zkConfig无法自动初始化。解决方案包括在ZkManager上添加@Component注解,并结合Resource和PostConstruct注解,或者创建SpringUtils工具类来辅助注入。
摘要由CSDN通过智能技术生成

问题

  • 有一个 zk 配置,通过 @ConfigurationProperties 注释由 spring 容器自动初始化
@ConfigurationProperties(prefix = "jingwei.zookeeper")
public class ZkConfig {
   
    private String hosts;
    private String namespace;
    private int    sessionTimeout;
    private int    connectionTimeout;
}
  • 但是我们要使用 ZkConfig 的地方是一个普通类 ZkManager,它没有 @controller 、@service、@repository 注解,也就不会被 spring 容器自动初始化。
  • 如果在 ZkManager 中使用下面代码,然后 new ZkManager(),可以发现 zkConfig 为 null。
 @Resource
 private ZkConfig zkConfig;

方案1

  • 在 ZkManager 类上加 @Component 注解。
  • 使用 Resource 注解
 @Resource
 private ZkConfig zkConfig;
  • 通过 PostConstruct 触发注入
@PostConstruct
public void init(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值