class MyClass {
@Resource
private ManagedExecutorService executorService;
@Inject
private MyService myservice;
}
我想把它转换成这样的东西:
class MyClass {
private final ManagedExecutorService executorService;
private final MyService myservice;
@Inject
MyClass(ManagedExecutorService executorService, MyService myService)
{
this.executorService = executorService;
this.myService = myService;
}
}
这将使类不可变并且更容易进行单元测试。问题是,由于executorService需要通过@Resource注释获得,它似乎不能通过构造函数注入。
下面是我最终要做的--我创建了一个producer类来管理资源对象:
public class ExecutorServiceProducer {
@Resource
private ManagedExecutorService managedExecutorService;
@Produces
@Managed
public ExecutorService createManagedExecutorService() {
return managedExecutorService;
}
}
我创建了这个自定义注释:
@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface Managed {
}
然后我可以对我的类进行如下注释:
class MyClass {
private final ExecutorService executorService;
private final MyService myservice;
@Inject
MyClass(@Managed ExecutorService executorService, MyService myService)
{
this.executorService = executorService;
this.myService = myService;
}
}
当容器调用具有许多参数的类构造函数时,完成基于构造函数的DI,每个参数表示对另一个类的依赖。 例子 (Example) 以下示例显示了一个类TextEditor ,它只能通过构造函数注入进行依赖注入。 让我们有一个可用的Eclipse IDE,并按照以下步骤创建一个Spring应用程序 - 脚步 描述 1 创建一个名为SpringExample的项目,并在创建的项目中的src文件夹下创建一个包co
在尝试向CDI bean(ApplicationScoped)的构造函数中注入参数时,我遇到了以下问题: 但是,我在类上确实有一个可注入的构造函数: 有什么想法这里出了什么问题吗?
有一个简单的Mongo DB生产者连接到Mongo数据库 我的src/main/resources/meta-inf中的一个资源文件 WeldContext和WeldJUnit4Runner来自这里-http://memorynotfound.com/java-se-unit-testing-cdi-junit-jboss-weld-se/
我正在学习Spring框架(没有Spring Boot,为了了解它在头套下是如何工作的)。 这是我的DAO类: 这是我的ConnectionXML类: 它实现此接口: 嵌套异常为org.SpringFramework.Beans.BeanInstantiationException:无法实例化[com.SpringLearning.XMLBasedDAO]:未找到默认构造函数;嵌套的异常是java
我使用Spring Boot开发了REST服务。在其中一个REST控制器中,我有一个基于字段的依赖注入,我想将其更改为基于构造函数的依赖注入。我的依赖注入设置目前如下所示: 使用此设置,一切正常。我想将ParameterDateService更改为基于构造函数,我尝试了以下方法: 更改为基于构造函数的依赖注入后,当我尝试像这样注入依赖时,我会得到一个参数数据ervice.post参数日期(参数日期
我想在构造函数中使用Request类,这是我想运行服务器时它给我的错误: 无法自动连接服务"AppBundle\Controller\DetectServiceDetailController":方法"__construct()"引用类"Symfony\Component\HttpFoundation\Request"的参数"$ask",但不存在这样的服务。它不能自动注册,因为它来自不同的根命名空