我尝试使用@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")
它 throw a 时java.lang.NullPointerException
,generator.generateNumber()
我认为它不正确@Qualifier
,尝试使用此链接解决此问题,Java EE 7 CDI - 注入不起作用,发送 NullPointerException我添加了所有依赖项但问题还是一样?
我错过了什么?
请注意,我知道什么是 NullPointerException,以及如何修复它?
谢谢你。
问题是new BookServices()
在你的InjectionTest
班级。该new
运营商打破CDI。只需@Inject
将BookServices
豆。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句