while语句中可以getchar吗_Spring 中的抽象类可以被注入吗?

提出问题:

在Spring 容器中,抽象类可以加上@Compoment注解后,实现调用内部的方法吗?

类设计与测试
抽象类加注解,无子类实现

接口

 public interface RechargeFacade {   /**    * 测试接口    */    void recharge();}

实现

 @Servicepublic abstract class RechargeFacadeImpl implements RechargeFacade {    @Override    public void recharge() {        System.out.println("asdasd1");    }}

测试

 @SpringBootApplication@ComponentScan(basePackages = {"xxxx"})public class AppFinanceApplication {    @Resource    private RechargeFacade rechargeFacade;    public static void main(String[] args) {        SpringApplication.run(AppFinanceApplication.class, args).getBean(RechargeFacade.class);    }    @PostConstruct    void init(){        System.out.println("asdasd=======");        rechargeFacade.recharge();    }}

结果

 Description:A component required a bean of type 'cn.lskiot.finance.compose.facade.RechargeFacade' that could not be found.
抽象类加一个子类继承

抽象类子类未加注解

 public class asd extends RechargeFacadeImpl {}

结果

 A component required a bean of type 'cn.lskiot.finance.compose.facade.RechargeFacade' that could not be found.

抽象类子类加注解

 @Servicepublic class asd extends RechargeFacadeImpl {}

结果

bd82c73324d18a59f44c7b1b07ca4a87.png

问题引入

首先明确一个问题:抽象类不能生成实例对象,spring无法注入。

原因:

spring的原理是启动服务器时读取配置文件,取得类名后利用反射机制在spring上下文中生成一个单例的对象,由spring注入属性并维护此对象的状态,抽象类在反射生成对象时就已经失败了,后面的不会进行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值