有一个简单的Mongo DB生产者连接到Mongo数据库
@SuppressWarnings({ "deprecation", "resource" })
@ApplicationScoped
public class MongoDBProducer {
@Resource(name = "mongoUri")
private MongoClientURI mongoClientURI;
private DB database;
@PostConstruct
public void init() throws UnknownHostException {
MongoClient mongoClient = new MongoClient(mongoClientURI);
database = mongoClient.getDB(mongoClientURI.getDatabase());
}
@Produces
public DB createDB() {
return database;
}
}
我的src/main/resources/meta-inf中的一个资源文件
<resources>
<Resource id="mongoUri" class-name="com.mongodb.MongoClientURI" constructor="uri">
uri mongodb://localhost/ironman
</Resource>
</resources>
public class MongoDBProducerTest {
@Inject
DB mongoDb;
@Test
public void runSampleTest() {
assertEquals(mongoDb.collectionExists("jobs"), true);
}
}
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se</artifactId>
<version>2.2.8.Final</version>
</dependency>
WeldContext和WeldJUnit4Runner来自这里-http://memorynotfound.com/java-se-unit-testing-cdi-junit-jboss-weld-se/
如果您希望@resource在单元测试中被处理,也许您可以查看ejb-cdi-unit,它在Weld-SE中运行测试,并提供一个CDI-扩展,该扩展将@resource替换为@inject,这样您就可以在测试中定义一个要被注入的CDI-替代方案。
我试图提供一个机会注入任意枚举给定的注入点和字符串值(这是在生产方法中获得) 任意是指如果我有枚举我的和枚举你的,我想用相同的生产者方法注入它们两个或任何其他一个。 所以我尝试了几种方法:1。 2.我将返回类型更改为对象。 在这两种情况下,我都会收到由:org引起的下一个异常。jboss。焊接例外情况。DeploymentException:WELD-001408:在注入点[BackedAnnot
我想把它转换成这样的东西: 这将使类不可变并且更容易进行单元测试。问题是,由于executorService需要通过@Resource注释获得,它似乎不能通过构造函数注入。
像这样上课: 有没有可能告诉Weld不要注射到c中?我可以否决使用事件的类: 但是B物体也不会被注射。我在搜索类似这样的东西:“如果类名是A,字段类型是C,那么省略注入。” 更具体地说,我希望HK2引擎注入“C”字段,问题是HK2和焊接都使用@注入注释。 我尝试了西利亚罗斯的解决方案。我找到了想要添加自定义注入实现的类型,比如: 在我添加了覆盖注入(…)在美国 比如: 在Manager eBVia
问题内容: 比方说,我有一个名为接口,以及三种实现- ,和。 现在,我希望每当我的托管bean(或任何Web组件)收到一条消息时,便在所有社交网络中共享它。我试过了: 但这没有用(部署错误)。(也尝试了预选赛-同样的结果) 那么,有没有办法注入接口的所有(或某些)实现的列表? 我知道给定注入点不应包含多个可能的bean的规则。我想我可以通过创建一个产生列表的生产者并使用来实现这一点,但这对于这项任
当前有包含内部映射器的映射器(有时,它们本身包含其他内部映射器)。
我正在junit测试中使用Weld SE。它似乎没有注入CDIBean的内部场。我使用的是maven artifcat 没有例外,该字段只是空的。我尝试了构造函数注入,而不是字段注入: 在这种情况下,我会收到一条异常消息:org。jboss。焊接例外。不满意的解决方案例外:WELD-001334:带限定符的Z型服务的不满意依赖项