0
でBeanの要求クラスの情報を取得しますか?次のクラスを考えると春
でBeanの要求クラスの情報を取得しますか?次のクラスを考えると春
B
がLoggerの場合、約A
を知る必要がある場合は、すべてのロギングフレームワークの動作と同様にFactory Patternを使用する必要があります。
ロギングフレームワークには、通常、グローバルファクトリが1つあります。 Springでは、そのようなファクトリを注入する必要があります。
例:
interface Logger {
void log(String message);
}
interface LoggerFactory {
Logger getLogger(Object context);
}
@Component
class MyLoggerFactory implements LoggerFactory {
@Override
public Logger getLogger(Object context) {
return new Logger() {
@Override
public void log(String message) {
System.out.println(context.getClass().getSimpleName() +
" says '" + message + "'");
}
}
}
}
@Component
class A {
private Logger logger;
@Inject
public void setLogger(LoggerFactory factory) {
this.logger = factory.getLogger(this);
}
}
ああ!愚かな私。そうです、これは私のために働きます。ありがとう! –
なぜあなたはその情報が必要でしょうか? –
@SotiriosDelimanolis私は特別なロジックを持つロガーのBeanを作成しようとしていますが、ロガーの初期化にはログを出力するクラスが必要です。 –
どのクラスですか? 'B'オブジェクトを注入したい何百もの* beanがあるかもしれません。このメソッドが呼び出された時点で、Springコンテナはそれらのうちのどれかしか知りません。あなたの質問に答えるには:**いいえ**、それは不可能です。 – Andreas