Я пытаюсь ввести объект logger в класс, который реализуется после одноэлементного подхода.
Код выглядит примерно так:
Logger
класс:
public class LoggerFactory {
@Produces
public Logger getLogger(InjectionPoint caller){
return Logger.getLogger(caller.getMember().getDeclaringClass().getName());
}
}
Затем я создаю класс, который требует регистратора и реализует шаблон Singleton:
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
, но не повезло.