インジェクションクラスで問題が発生しました。
私の構成では、ログインのレベルを設定する1つのクラスと、レベルを設定するための1つの変数があります。
<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;
}
このコードを実行したいとき、setlevelLogging
呼び出し時に log4jConfig が null であるため、NPE を取得しました。
この例外を解決するにはどうすればよいですか?
ここで、このクラスをプロパティから除外し、configClass で新しいクラスを作成します。
Log4jConfigJmx log4jConfig = new Log4jConfigJmx()
しかし、私はこれが良い考えだとは思わない
編集:
以下の例を試してみましたが、まだ問題があります。
最初に私はこの例外を得ました:
[ERROR] java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
私はトランザクションと AOP を使用しているため、デフォルトのコンストラクターをクラスに追加して、2 つ持っています。
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を持っています
助けてください