gpt4 book ai didi

java - 为什么我不能注入(inject)非 bean 抽象父类的子 bean 类

转载 作者:搜寻专家 更新时间:2023-11-01 03:24:50 24 4
gpt4 key购买 nike

我有一个带有一个参数化构造函数的参数化抽象类:

public abstract class BasicEntidadController<T extends Entidad> implements Serializable {

public BasicEntidadController(EntidadBean<T> entidadSessionBean) {....}
// other methods
}

和扩展它的子类:

@SessionScoped
@Named
public class TiendaController extends BasicEntidadController<Tienda> implements Serializable {...}

WELD 报告一个错误,告诉我“BasicEntidadController”不可代理....

org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001435 Normal scoped bean class org.wgualla.sandbox.entity.BasicEntidadController is not proxyable because it has no no-args constructor - Managed Bean [class org.wgualla.sandbox.tienda.TiendaController] with qualifiers [@Any @Default @Named].

为什么 WELD 试图创建这个抽象/无 bean 类的代理???

如果我想在 EL 表达式中仅注入(inject)/使用树中的最后一个子节点,我是否必须执行所有类、继承树中的可代理类?

提前致谢。

最佳答案

根据定义,java bean 具有“该类必须具有公共(public)默认构造函数(不带参数)”。

参见 http://en.wikipedia.org/wiki/JavaBeans#JavaBeans_API

我建议您将构造函数更改为

public BasicEntidadController() {....}
// other methods

然后添加一个setter方法

setEntidadSessionBean(EntidadBean<T> entidadSessionBean)

或者更好 - 阅读有关依赖注入(inject)的内容。然后你可以使用类似的东西

@Autowired
EntidadBean<T> entidadSessionBean;

参见 http://www.vogella.com/articles/SpringDependencyInjection/

希望对你有帮助

关于java - 为什么我不能注入(inject)非 bean 抽象父类的子 bean 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17351220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com