0
의 콩에 대한 요청 클래스의 정보를 얻을 수?다음과 같은 클래스를 고려 봄
의 콩에 대한 요청 클래스의 정보를 얻을 수?다음과 같은 클래스를 고려 봄
B
이 로거이고 약 A
을 알아야하는 경우 모든 로깅 프레임 워크가 작동하는 것과 비슷한 팩터 리 패턴을 사용해야합니다.
로깅 프레임 워크에는 일반적으로 하나의 글로벌 팩토리가 있습니다. Spring에서는 그러한 factory를 injection해야한다.
예 :
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 특별한 논리를 가진 logger를 위해 bean을 만들려고하는데, logger의 init은 로그를 출력 할 클래스가 필요하다. –
어떤 클래스? 'B' 객체가 주입되기를 원하는 수백 개의 * beans가있을 수 있습니다. 메서드가 호출 될 때 Spring 컨테이너는 그 중 하나만 알고있다. 귀하의 질문에 대답하십시오 : ** 아니 **, 그것은 불가능합니다. – Andreas