@Inject @ThirteenNumber 抛出 NullPointErexception
@Inject @ThirteenNumber throw NullPointException
我尝试使用 @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
,试图解决这个问题,使用这个 link, Java EE 7 CDI - Injection doesn't work, sending NullPointerException 我添加了所有依赖项但问题仍然相同?
我是不是漏掉了什么?
注意我知道What is a NullPointerException, and how do I fix it?
谢谢。
问题出在您的 InjectionTest
class 中的 new BookServices()
。 new
运算符中断 CDI。只是 @Inject
BookServices
bean。
我尝试使用 @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
,试图解决这个问题,使用这个 link, Java EE 7 CDI - Injection doesn't work, sending NullPointerException 我添加了所有依赖项但问题仍然相同?
我是不是漏掉了什么?
注意我知道What is a NullPointerException, and how do I fix it?
谢谢。
问题出在您的 InjectionTest
class 中的 new BookServices()
。 new
运算符中断 CDI。只是 @Inject
BookServices
bean。