我是靠谱客的博主 闪闪枕头,最近开发中收集的这篇文章主要介绍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 中的抽象类可以被注入吗?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部