java 如何在抽象类中使用Spring bean

kcrjzv8t  于 2023-02-28  发布在  Java
关注(0)|答案(4)|浏览(309)

抽象类

public abstract class AbstractService<T> {

    abstract void doSomeThing;

}

扩展类

@Component
public class AServiceImpl<Entity> extends AbstractService<Entity> {

}

我想用它

public class RestfullController {

    @Resource
    AbstractService abstractService;

}

但重点是

Description:

A component required a bean of type 'com.test.AbstractService' that could not be found.

如何使用这个extends类?

hgb9j2n6

hgb9j2n61#

要么直接在控制器中使用AServiceImpl,要么声明一个接口而不是抽象类,因为最后一个不能示例化

cwdobuhd

cwdobuhd2#

您可以使用参数AbstractServiceRestfullController上声明AbstractService和初始化构造函数。Spring将在启动时自动初始化组件。

l2osamch

l2osamch3#

使用构造函数注入而不是@Resource

  • 静止控制器
@RestController
public class RestfullController {

    AbstractService abstractService;

    public RestfullController(AbstractService abstractService) {
        this.abstractService = abstractService;
    }

}
  • 文摘社
public abstract class AbstractService {

    abstract void doSomeThing();

}
  • A服务实施
@Component
public class AServiceImpl extends AbstractService {

    @Override
    void doSomeThing() {
        // TODO
    }
}

希望对你有帮助:)

wbgh16ku

wbgh16ku4#

应用程序似乎无法扫描组件,请检查您是否在主应用程序文件中添加了@ComponentScan

@SpringBootApplication
@ComponentScan(basePackages = { "com.test" })
// ...

相关问题