새로운 프로젝트를 하나 생성
스프링 부트의 가장 기본이 되는 부분만 띄웠을 때 어떤 자동 구성 빈들이 올라오는지 확인하고 싶은 경우 프로젝트 옵션 설정에서 Virtual Machine 옵션을 추가 : -Ddebug
불편한 점
해결방법
ConditionEvalutionReport 내부에 로그에서 나오는 모든 내용이 담겨있으므로 이걸 가지고 필요한 정보들을 추출하거나 조작해서 필요한 로그만 확인하면 됨
VM 옵션으로 설정한 -Ddebug
를 제거하고
코드 추가
@SpringBootApplication
public class SpringbootAcApplication {
@Bean
ApplicationRunner run(ConditionEvaluationReport report) {
return args -> {
report.getConditionAndOutcomesBySource().entrySet().stream()
.filter(co -> co.getValue().isFullMatch())
.forEach(co -> {
System.out.println(co.getKey());
});
};
}
public static void main(String[] args) {
SpringApplication.run(SpringbootAcApplication.class, args);
}
}
ㄴ
참고) 코드 설명
실행결과
아직 이 로그만 봐서 어떤 Codition을 통과했는지 알 수 없음
코드 추가 (JMX 제외 및 Condition을 통과한 자동 구성의 개수 출력)
@Bean
ApplicationRunner run(ConditionEvaluationReport report) {
return args -> {
System.out.println(
report.getConditionAndOutcomesBySource().entrySet().stream()
.filter(co -> co.getValue().isFullMatch())
.filter(co -> co.getKey().indexOf("Jex") < 0)
.map(co -> {
System.out.println(co.getKey());
co.getValue().forEach(c -> {
System.out.println("\\t" + c.getOutcome());
});
System.out.println();
return co;
}).count()
);
};
}
실행결과