사용자에게 친숙한 오류 원인을 표시하려면 Java Config @Bean 메소드에서 확인된 예외와 확인되지 않은 예외를 어떻게 처리해야 합니까?[복제하다]

StackOverflow https://stackoverflow.com//questions/25004905

문제

저는 작은 spring-boot 기반 명령줄 응용 프로그램을 개발 중입니다.메인 클래스에는 @Autowired 주석이 달린 필드가 있습니다. @Autowired Repository repository; 적절한 @Bean 주석 메서드가 있는 Java Config 클래스에 구성 레시피가 제공됩니다. @Bean Repository repository(){...}.

@Bean-annotated 메소드에는 확인된 예외와 확인되지 않은 예외를 발생시킬 수 있는 코드가 포함되어 있습니다.@Bean Repository repository(){...//exceptions}

내 목표는 긴 스택 추적이 아닌 적절한 로깅 수준에서 간단한 메시지를 기록하는 사용자 친화적인 애플리케이션을 만드는 것입니다.

현재 Java Config @Bean 주석 메소드의 예외로 인해 애플리케이션이 종료됩니다. o.s.boot.SpringApplication: Application startup failed 메시지와 매우 긴 스택 추적.

문제 해결에 유용한 사용자 친화적인 간단한 메시지를 기록하기 위해 Java Config @Bean 주석 메서드에서 최소한 일반적인 예외(내가 알고 있는)를 처리할 수 있는 좋은 방법이 있는지 궁금합니다.

나는 그러한 전략이 Java Config 클래스에 예외 처리 코드를 추가할 것으로 예상한다고 가정하지만 공개적으로 사용 가능한 Java Config 클래스에서 그러한 코드를 본 적이 없습니다. 이는 Java Config 클래스의 예외 처리 코드가 나쁜 습관일 수 있음을 시사합니다.

감사합니다.

도움이 되었습니까?

해결책

여기에는 몇 가지 옵션이 있다고 생각하며 어느 것이 가장 좋은지는 주로 개인 취향과 지원서 구조에 따라 다릅니다.

한 가지 옵션은 호출하기 전에 모든 입력 유효성 검사를 수행하는 것입니다. SpringApplication.run().이는 모든 명령줄 인수에 대해 작동하지만 다음을 통해 구성된 모든 항목에 대해서는 기껏해야 번거롭습니다. application.properties.

당신의 예외를 던지는 대신 @Bean 방법을 사용하면 이를 잡아서 적절하게 처리할 수 있습니다.문제가 경미한 경우 문제를 설명하는 정보나 경고 메시지를 기록하고 애플리케이션이 계속되도록 할 수 있습니다.문제가 심각한 경우 오류 메시지를 기록한 다음 전화를 걸 수 있습니다. System.exit().이는 사용자에게 친숙한 오류 보고를 제공하는 동안 발생한 모든 예외에 대해 @Bean 메서드가 호출되는 동안에도 그 이후에 발생하는 모든 예외에 대한 스택 추적이 계속 남아 있습니다.

마지막으로 통화를 다음으로 마무리할 수 있습니다. SpringApplication.run() try-catch 블록에서.그런 다음 발견된 예외와 원인 체인을 조사하여 기록할 적절한 오류 메시지를 결정할 수 있습니다.이 접근 방식의 장점은 원인이 되는 모든 예외에 대해 사용자에게 친숙한 오류 메시지를 제공할 수 있다는 것입니다. SpringApplication.run() 실패하는 것은 단지 당신의 내부에서 던져진 것이 아니라 @Bean 행동 양식.

유효성을 검사할 명령줄 인수가 있다고 가정하면 아마도 첫 번째 옵션과 세 번째 옵션을 조합하여 사용할 것입니다.먼저 JOpt Simple과 같은 CLI 라이브러리를 사용하여 작업을 좀 더 쉽게 만들겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top