NullPointerException получение имени класса бина в методе @Produces - PullRequest
0 голосов
/ 17 января 2019

У меня есть класс LoggerProducer, который внедряется в bean-компонент @Stateless для создания записей журнала, как объяснено здесь .

Проблема в том, что когда вызывается CustomerBean (даже без вызова logger.info), метод @Produces (который получает имя класса компонента) завершается с NullPointerException. Что не так с этим кодом?

@Named
@Singleton
public class LoggerProducer {

    @Produces
    public Logger produceLogger(InjectionPoint injectionPoint) {
        return LoggerFactory.getLogger(
                   injectionPoint.getBean().getBeanClass()); // <- error here
    }   

}

Бин, который внедряет логгер:

import org.slf4j.Logger;

@Stateless
@LocalBean
@Named
public class CustomerBean  {

    @Inject
    private Logger logger;

    ......
      logger.info("some message");

1 Ответ

0 голосов
/ 20 января 2019

Предполагая, что injectionPoint не равно нулю (в методе вашего производителя), вы можете попробовать это:

@Produces 
Logger createLogger(InjectionPoint injectionPoint) { 
    return LoggerFactory.getLogger( injectionPoint.getMember().getDeclaringClass().getName() );
}
...