У меня проблема впрыска класса.NPE когда класс впрыска весной
В моей конфигурации у меня есть один класс, который уровень настройки логина и затем один переменный для уровня настройки:
<bean id="config" class="..." init-method="init">
<property name="log4jConfig" ref="log4j" />
<property name="levelLogging" value="9" />
</bean>
и кода:
public void setlevelLogging(Integer level) {
if (level == null) {
set0();
} else {
switch (level) {
case 0:
set0();
break;
case 9:
set9();
}
}
this.level = level;
}
private void set0() {
log4jConfig.setLoggerLevel("org.springframework.ws.server.MessageTracing", "OFF");
log4jConfig.setLoggerLevel("org.app", "INFO");
log4jConfig.setLoggerLevel("org.springframework.ws.client.MessageTracing", "OFF");
}
public void setLog4jConfig(Log4jConfigJmx log4jConfig) {
this.log4jConfig = log4jConfig;
}
, когда я хочу, чтобы запустить этот код, который я получил NPE, потому что log4jConfig имеет значение null, когда вызывается setlevelLogging
.
Как я могу решить это исключение?
теперь я исключить этот класс из свойств и создание нового класса в configClass:
Log4jConfigJmx log4jConfig = new Log4jConfigJmx()
, но я не думаю, что это хорошая идея
EDIT:
Стараюсь пример ниже, но у меня есть еще одна проблема:
сначала я получил это исключение:
[ERROR] java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
, потому что я использую транзакционной и АОП, так что я добавить конструктор по умолчанию в классе, так у меня есть два из них:
public Config() {
}
public Config(Log4jConfigJmx log4jConfig, Integer level) {
this.log4jConfig = log4jConfig;
setlevelLoggin(level);
}
setlevelLogging ...
<bean id="config" class="..." init-method="init">
<constructor-arg index="0" ref="log4j" />
<constructor-arg index="1" value="9" />
</bean>
, но теперь у меня есть еще NPE
Просьба помочь
Вы можете использовать как конструктор args, так что заказ не изменится. – BobTheBuilder
hm и можно совместить конструктор arg с собственностью? – hudi
Как выглядит ваш класс сейчас и как выглядит ваш весенний xml? Кроме того, вы проверяли с помощью отладки, что переданный log4j не является нулевым? – tom