@Inject @ThirteenNumber 抛出 NullPointException

YCF_L

我尝试使用@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.NullPointerExceptiongenerator.generateNumber()我认为它不正确@Qualifier,尝试使用此链接解决此问题,Java EE 7 CDI - 注入不起作用,发送 NullPointerException我添加了所有依赖项但问题还是一样?

我错过了什么?

请注意,我知道什么是 NullPointerException,以及如何修复它?

谢谢你。

鲁力博

问题是new BookServices()在你的InjectionTest班级。new运营商打破CDI。只需@InjectBookServices豆。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章