【发布时间】:2017-10-03 11:36:02
【问题描述】:
当尝试将参数注入 CDI bean (ApplicationScoped) 的构造函数时,我遇到了以下问题:
Caused by: org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001435: Normal scoped bean class xx.Config is not proxyable because it has no no-args constructor - Managed Bean [class xx.Config] with qualifiers [@Default @Named @Any].
at org.jboss.weld.bean.proxy.DefaultProxyInstantiator.validateNoargConstructor(DefaultProxyInstantiator.java:50)
at org.jboss.weld.util.Proxies.getUnproxyableClassException(Proxies.java:217)
at org.jboss.weld.util.Proxies.getUnproxyableTypeException(Proxies.java:178)
但是,我确实在类上有一个可注入的构造函数:
@Inject
public Config(ConfigLocator configLocator) {
defaultConfigPath = configLocator.getPath();
doStuff();
}
使用默认构造函数、变量注入和 postconstruct 方法,这一切都可以正常工作,但在这种情况下我更喜欢构造函数注入。
你有什么想法吗?
【问题讨论】:
-
添加一个私有的默认构造函数给了我 WELD-001436 。添加受保护的默认构造函数是可行的,但随后会引发一个异常,即 RequestScope 在初始化 ConfigLocator 时不活动。
-
好的!我已经完成了
标签: java dependency-injection cdi weld