spring无法为java抽象类注入实例对象属性的问题

今天有个同事在写代码的时候碰到一个比较冷门的问题,他在一个抽象类当中注入了几个配置属性,同时在抽象方法中去使用,但是拿到的值是null。

如以下代码;

@Slf4j
@Component
public abstract class WxxSupport {

    @Value("${sendMsgUrl}")
    private String sendMsgUrl;

    /**
     * 初始化的方法,需要初始化当前用户的
     */
    abstract protected Integer getAppId();

    abstract protected String getAccessToken();



    void print(){
			log.info(sendMsgUrl);
     }

后来想起来spring注入对象是需要实例来承载的,而抽象类在spring初始化阶段就失败了
,如果spring无法实例化抽象类,那就更不会为当前了注入对象了。

解决方案很简单,就是新建一个子类继承当前的抽象类,根据ava多态向上,向下转型的结果,spring是在实例化子类的同时会也给注入父类所创建的并需要注入实例的属性和对象。
如以下代码

 @Component
@Slf4j
public  class WxSupportImpl extends WxSupport {
 .........................
 .........................
  void print(){
			  super.print();
     }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值