首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CDI中使用@alternatives

在CDI中使用@alternatives
EN

Stack Overflow用户
提问于 2016-09-14 03:30:34
回答 2查看 1.7K关注 0票数 0

我已经开始阅读这本从Java开始的书,目前正在忙于EE7一章。我的Alternative类如下所示。

代码语言:javascript
复制
@Alternative
@ThirteenDigits
public class MockGenerator implements NumberGenerator {

@Inject
private Logger logger;

@Loggable
public String generatorNumber() {
    String mock = "MOCK-" + Math.abs(new Random().nextInt());
    logger.info("Generated mock : " + mock);
    return mock;
}
}

我使用的另一个依赖类如下所示

代码语言:javascript
复制
@ThirteenDigits
public class IsbnGenerator implements NumberGenerator {

@Inject
private Logger logger;

@Loggable
public String generatorNumber() {
    String isbn = "13-84356-" + Math.abs(new Random().nextInt());
    logger.info("Generated ISBN : " + isbn);
    return isbn;
}

}

我的beans.xml文件如下所示。

代码语言:javascript
复制
 <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org.2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/sml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.1" bean-discovery-mode="all">

<alternatives>
    <class>com.narotech.MockGenerator</class>
</alternatives>
<interceptors>com.narotech.LoggingInterceptor</interceptors>
</beans>

我的注入代码如下所示。

代码语言:javascript
复制
@Inject 
@ThirteenDigits
private NumberGenerator numberGenerator;

public Book createBook(String title, Float price, String description) {
    Book book = new Book(title, price, description);

    book.setNumber(numberGenerator.generatorNumber());
    return book;
}

现在,我不知道为什么,但是当我运行JUnit测试时,我得到的是"13-84356-683584002“,而不是"MOCK-84356-683584002”之类的东西。谁能告诉我我做错了什么。如果你需要我提供更多的信息,请告诉我。

EN

回答 2

Stack Overflow用户

发布于 2016-09-15 01:06:38

我已经设法解决了这个问题。我只是向MockGenerator类添加了一个@Priority注释。

票数 0
EN

Stack Overflow用户

发布于 2018-09-28 05:50:06

@Priority是解决这个问题的一种方法,但是您也可以使用@Specializes作为一种更简单的机制:https://docs.oracle.com/javaee/6/tutorial/doc/gjsdf.html#gkhpo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39477646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档