繁体   English   中英

为什么我不能注入非bean抽象父类的子bean类

[英]why I can't inject child bean class of not bean abstract parent class

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

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表达式注入/使用,是否必须在继承树中执行所有类的可代理操作?

提前致谢。

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

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

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

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

然后添加一个setter方法

setEntidadSessionBean(EntidadBean<T> entidadSessionBean)

甚至更好-阅读有关依赖注入的信息。 然后,您可以使用类似

@Autowired
EntidadBean<T> entidadSessionBean;

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

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM