gpt4 book ai didi

cdi - 在 CDI 中注入(inject)带有限定符的字符串

转载 作者:行者123 更新时间:2023-12-04 15:37:01 24 4
gpt4 key购买 nike

我正在尝试做简单的事情。注塑合格String (或 File )在 CDI 中。

所以我有一个限定符:

@Retention(RetentionPolicy.RUNTIME)
@Target({FIELD,METHOD,PARAMETER,TYPE})
@Qualifier
public @interface FilesRepositoryPath {}

我有一个制片人:
public class FilesRepositoryPathProducer {

@Produces
@FilesRepositoryPath
public String getRepositoryDirectory() {
return "path.taken.from.configuration";
}
}

我正在尝试使用它:
@ApplicationScoped
public class FilesRepository {

@Inject
public FilesRepository(@FilesRepositoryPath String filesDirectory) {
//Do some stuff
}
}

但是,WELD 不能实例化这个 bean。我遇到了一个异常(exception):
org.jboss.arquillian.impl.event.FiredEventException: org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001410 The injection point [field] @Inject private za.co.fnb.commercial.dms.file.FilesRepositoryBeanTest.repo has non-proxyable dependencies

我知道 String是不可代理的,但为什么 WELD 要创建代理?它有 @Dependent范围,所以AFAIK它不应该创建代理。我怎样才能让它工作?

最佳答案

你需要默认的构造函数

@ApplicationScoped
public class FilesRepository {

public FilesRepository() {
}

@Inject
public FilesRepository(@FilesRepositoryPath String filesDirectory) {
//Do some stuff
}
}

关于cdi - 在 CDI 中注入(inject)带有限定符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5733557/

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