我正在尝试在一个按照单例方法实现的类中注入一个记录器对象。
代码几乎是这样的:
Logger
班级:
public class LoggerFactory {
@Produces
public Logger getLogger(InjectionPoint caller){
return Logger.getLogger(caller.getMember().getDeclaringClass().getName());
}
}
然后我创建一个需要记录器并实现单例模式的类:
public class MySingleton{
@Inject
private Logger logger;
private MySingleton instance;
/*
* Private constructor for singleton implementation
*/
private MySingleton(){
logger.info("Creating one and only one instance here!");
}
public MySingleton getInstance(){
if(instance == null) {
instance = new MySingleton();
}
return instance;
}
}
如果我运行代码(在 Glassfish 3.1.2.2 上),我一尝试使用记录器就会得到 NPE。我做错了什么(beans.xml
文件到位)?我也尝试过使用对象@Inject
的 setter 方法,Logger
但没有运气。