我已经开始阅读这本从Java开始的书,目前正在忙于EE7一章。我的Alternative类如下所示。
@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;
}
}我使用的另一个依赖类如下所示
@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文件如下所示。
<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>我的注入代码如下所示。
@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”之类的东西。谁能告诉我我做错了什么。如果你需要我提供更多的信息,请告诉我。
发布于 2016-09-15 01:06:38
我已经设法解决了这个问题。我只是向MockGenerator类添加了一个@Priority注释。
发布于 2018-09-28 05:50:06
@Priority是解决这个问题的一种方法,但是您也可以使用@Specializes作为一种更简单的机制:https://docs.oracle.com/javaee/6/tutorial/doc/gjsdf.html#gkhpo
https://stackoverflow.com/questions/39477646
复制相似问题