Можно ли использовать переменные экземпляра в Бине сеанса без состояния?
Я знаю, что безгосударственный Боб не поддерживает разговорное состояние, но мне нужен просто регистратор. Должен ли я получить logger в каждом методе, который вызывается? Если нет, то где я должен инициализировать его?
Это точно, что если я напишу такой код, то не получу NullPointerException в каком-нибудь методе, использующем logger?
@PostConstruct
public void init() {
logger = Logger.getLogger();
}
3 ответа:
Я думаю, вы не хотели бы иметь специальный регистратор запросов / сеансов, верно? В этом случае вы можете даже использовать статический член класса для добавления регистратора и позволить всем экземплярам bean использовать один и тот же регистратор.
Создайте синглетный класс, который будет иметь следующие свойства:
- статическое поле с типом самого класса
- частный конструктор, чтобы гарантировать, что только один экземпляр этого регистратора класс инициируется
getInstance()
метод, который даст единственный экземпляр классаgetLogger()
метод получения регистратораИнициализировать регистратор в конструкторе этого класса и
Вы можете получить регистратор из метода getLogger() каждый раз, когда вы нужно использовать его