我是靠谱客的博主 闪闪枕头,这篇文章主要介绍java抽象类可以有构造函数吗_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 {}

结果

14edf6a808c8538e8c68fc20055abaf3.png

问题引入

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

原因:

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

最后

以上就是闪闪枕头最近收集整理的关于java抽象类可以有构造函数吗_Spring 中的抽象类可以被注入吗?的全部内容,更多相关java抽象类可以有构造函数吗_Spring内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(151)

评论列表共有 0 条评论

立即
投稿
返回
顶部