【发布时间】:2017-09-09 06:41:21
【问题描述】:
我尝试使用@Injection,所以从这里的一个简单示例开始:
界面
public interface NumberGenerator {
String generateNumber();
}
图书服务
public class BookServices {
@Inject
@ThirteenNumber
private NumberGenerator generator;
public Book createBook(String title){
return new Book(title, generator.generateNumber());
}
}
图书对象
public class Book {
private String title;
private String isbn;
public Book() {
}
public Book(String title, String isbn) {
this.title = title;
this.isbn = isbn;
}
//getters and setters
}
CDI
@Named(value = "injectionTest")
@ViewScoped
public class InjectionTest implements Serializable {
public void showResult() {
BookServices bookService = new BookServices();
Book book = bookService.createBook("Java book");
System.out.println(book.toString());
}
//...
}
十三号实现
@ThirteenNumber
public class IsbnGenerator implements NumberGenerator{
@Override
public String generateNumber(){
return "13-84333-" + Math.abs(new Random().nextInt());
}
}
问题
当我尝试调用bookService.createBook("Java book") 时,它会抛出一个java.lang.NullPointerException,在generator.generateNumber() 我认为它没有调用正确的@Qualifier,试图解决这个问题,使用这个链接,Java EE 7 CDI - Injection doesn't work, sending NullPointerException 我添加了所有依赖关系,但问题还是一样?
我错过了什么吗?
注意我知道What is a NullPointerException, and how do I fix it?
谢谢。
【问题讨论】:
-
问题是你的 InjectionTest 类中的
new BookServices()。new运算符会破坏 CDI。就@InjectBookServices -
谢谢@Rouliboy,这真的很有帮助,在那之后我又遇到了一个错误
CDI deployment failure:WELD-001408: Unsatisfied dependencies for type BookServices with qualifiers @Default我像这样解决了它 1- 在 BookServices 中实现 Serializable 并将bean-discovery-mode更改为bean-discovery-mode="all"谢谢又来了
标签: jakarta-ee cdi inject