在尝试向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();
}
有什么想法这里出了什么问题吗?
解决了类划分为接口和实现的类似问题。在您的情况下,类似于以下内容:
public interface Config
{
// API here
}
@ApplicationScoped @Priority(0)
public class ConfigImpl implements Config
{
@Inject
public ConfigImpl(ConfigLocator configLocator) { ... }
// API implementation here
}
我想把它转换成这样的东西: 这将使类不可变并且更容易进行单元测试。问题是,由于executorService需要通过@Resource注释获得,它似乎不能通过构造函数注入。
问题内容: 我在这里找不到任何合理的答案,所以我希望它不会重复。那么为什么我应该更喜欢setter或构造函数注入而不是简单注入 如果您在类初始化期间需要对注入的bean进行某些操作,则可以使用构造函数注入的用法 但是仍然,它几乎和方法一样,并且我完全不会进行setter注入,这不只是Spring和其他DI框架之后的遗物吗? 问题答案: 构造函数和属性注入使您可以轻松地在非CDI环境中(例如,单元测
这就是我的目标: 这是我的Aspect类: 如何为构造函数对象创建切入点?
我想在构造函数中使用Request类,这是我想运行服务器时它给我的错误: 无法自动连接服务"AppBundle\Controller\DetectServiceDetailController":方法"__construct()"引用类"Symfony\Component\HttpFoundation\Request"的参数"$ask",但不存在这样的服务。它不能自动注册,因为它来自不同的根命名空
注入是将依赖注入对象的过程。 构造函数注入很常见。 在此过程中,依赖项作为参数注入构造函数。 请参阅下面的示例。 创建一个名为GuiceTester的java类。 GuiceTester.java import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Inj
请帮助理解在哪种情况下我应该使用构造函数注入和设置器注入。请帮我举个合适的例子。 先谢谢你。