: 이 서비스 :를 autowire 스프링 콩 내가 관리되지 않는 도메인 객체로 서비스를 주입 한 AspectJ를 사용
@Configurable(dependencyCheck = true)
public class DomainObject {
private IAppenderService appenderService;
@Autowired
public void setAppenderService(IAppenderService appenderService) {
this.appenderService = appenderService;
}
public IAppenderService getAppenderService() {
return appenderService;
}
public String formMessage(String message){
return appenderService.getLoggerMessage(message);
}
}
다음 테스트 :
@Service
public class DomainServiceImpl implements DomainService {
public String getLoggerMessage(String prevMessage) {
return String.format("Message from logger service:%s", prevMessage);
}
}
이 도메인 객체입니다 성공했습니다 :
@Test
public void testAppender(){
DomainObject domainObject = new DomainObject();
assertNotNull(domainObject.getAppenderService());
}
는 "로거 서비스에서 메시지 : 테스트 메시지"
@Configurable(dependencyCheck = true)
public class MyAppender extends AppenderSkeleton {
IAppenderService appenderService;
@Autowired
public void setAppenderService(IAppenderService appenderService) {
this.appenderService = appenderService;
}
public IAppenderService getAppenderService() {
return appenderService;
}
@Override
public void close() {
}
@Override
public boolean requiresLayout() {
return false;
}
@Override
protected void append(LoggingEvent event) {
System.out.println(new DomainObject().formMessage(event.getMessage().toString()));
}
}
그런
내가 정의 SLF4J의 펜더에이 서비스를 사용하려고 내가이 콘솔에 문자열을 예상있어 한 모든 컨트롤러에
System.out.println(new DomainObject().formMessage("test message"));
하지만 NPE가 있어야합니다 :
java.lang.NullPointerException
at sbk.spring.testaopjc.domain.DomainObject.formMessage(DomainObject.java:19)
at sbk.spring.testaopjc.appender.MyAppender.append(MyAppender.java:29)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
동시에 테스트가 성공적으로 완료되었습니다.
public void testAppendeSecond(){
MyAppender appender = new MyAppender();
assertNotNull(appender.getAppenderService());
}
왜이 경우 MyAppender가 다른 방식으로 작동하는지 설명 할 수 있습니까? 추신 :
log4j.rootLogger=INFO, STDOUT
log4j.appender.STDOUT=sbk.spring.testaopjc.appender.MyAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%M:%L - %m%n
보인다. –
조언을주세요. – Sobik