jsf – 访问托管bean构造函数中注入的依赖关系导致NullPointerEx
发布时间:2020-12-13 20:25:53 所属栏目:百科 来源:网络整理
导读:我试图注入一个DAO作为托管属性. public class UserInfoBean { private User user; @ManagedProperty("#{userDAO}") private UserDAO dao; public UserInfoBean() { this.user = dao.getUserByEmail("test@gmail.com"); } // Getters and setters.} 创建bean
我试图注入一个DAO作为托管属性.
public class UserInfoBean { private User user; @ManagedProperty("#{userDAO}") private UserDAO dao; public UserInfoBean() { this.user = dao.getUserByEmail("test@gmail.com"); } // Getters and setters. } 创建bean后注入DAO对象,但在构造函数中为空,因此导致NullPointerException.如何使用注入的托管属性初始化托管bean?
注射只能在施工后进行,因为在施工前没有合格的注射目标.想象下面的虚构例子:
UserInfoBean userInfoBean; UserDao userDao = new UserDao(); userInfoBean.setDao(userDao); // Injection takes place. userInfoBean = new UserInfoBean(); // Constructor invoked. 这在技术上根本是不可能的.在现实中,发生了以下事情: UserInfoBean userInfoBean; UserDao userDao = new UserDao(); userInfoBean = new UserInfoBean(); // Constructor invoked. userInfoBean.setDao(userDao); // Injection takes place. 您应该使用注释为 @PostConstruct public void init() { this.user = dao.getUserByEmail("test@gmail.com"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |