2013-02-22 1 views
0

Как получить экземпляр Log4j инициализирована после чтения из конфигурационного файла и инъекционного свойствоинъекции заказ

Мой код:

private static String LogPath; 

@Value("#{settings['LogDirPath']}") 
private static void setLogDirPath(String LogDirPath) 
{ 
     LogPath = LogDirPath; 
} 

private static final Logger fileLogger = LoggerSetup.GetLogger(<Class Name>, <Logger Name>, LogPath); 

Однако, когда я ступаю в GetLogger, то LogPath всегда нуль.

Как я могу гарантировать, что fileLogger вызывается после завершения вставки файла конфигурации?

Update1:

@Value("#{settings['LogDirPath']}") 
private String LogPath; 

private static Logger googleLogger = LoggerSetup.GetLogger(<Class Name>, <Logger Name>, LogPath); 

ответ

0

Инициализировать переменную FileLogger (который, таким образом, не может быть окончательным) в методе setLogDirPath(). Поле класса инициализируется во время загрузки класса, прежде чем можно вызвать любой класс класса.

Это, я уверен, вы не можете использовать эту аннотацию для статического метода. Spring вводит поля, конструкторы или методы установки экземпляров.

+0

Было бы лучше иметь его, как показано в «UPDATE1» в моем операционном? Что дает мне «последний»? – user721264

+0

Это даже не компилируется. Вы имеете в виду поле экземпляра из статического инициализатора. Кроме того, соблюдайте соглашения об именах Java: переменные начинаются с строчной буквы. Ваш регистратор не должен быть статичным. –

+0

Я не работаю с моим кодом и будет PIA для рефакторинга, чтобы исправить соглашение об именах/стиле. – user721264

Смежные вопросы