在单例模式中使用 CDI
2022-09-03 18:28:19
我正在尝试在遵循单例方法实现的类中注入记录器对象。
代码几乎看起来像这样:
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。我做错了什么(文件已就位)?我也尝试过使用对象的 setter 方法,但没有运气。beans.xml
@Inject
Logger