springboot-이상 처리 및 단원 테스트

2620 단어

1. 사용자 정의 오류 페이지


springBoot 기본적으로 이상한 메커니즘: SpringBoot 기본값은 이상한 메커니즘을 처리합니다.프로그램에 이상이 생기면 SpringBoot은/error의 URL처럼 요청을 보냅니다.springboot에서/error 요청을 처리하고 기본 이상 표시된 페이지로 이동해서 이상 정보를 보여 줍니다.사용자 정의 오류 페이지로 모든 이상을 이동해야 한다면, src/main/resources/templates 디렉터리에 error를 만들어야 합니다.html(꼭 이 이름이어야 함)

2. @ExceptionHandler 메모 처리 예외 (이 컨트롤러에서만 사용)

@Controller
public class NewErrorController {
    
    
    @ExceptionHandler(value= {java.lang.ArithmeticException.class})
    public ModelAndView arithmeticExceptionHandler(Exception e) {
        ModelAndView mv = new ModelAndView();
        mv.addObject("error", e.toString());
        mv.setViewName("error");
        return mv;
    }
}

3. @ControllerAdvice+@ExceptionHander 메모 처리 예외


이상을 처리할 수 있는 전역 이상 클래스를 만들어야 합니다.클래스에 @ControllerAdvice 메모 추가

4. SimpleMappingExceptionResolver 구성 예외 처리(오류 정보를 전달할 수 없고 매핑만 가능)

@Configuration
public class GlobalException {

    @Bean
    public SimpleMappingExceptionResolver getSimpleMappingExceptionResolver() {
        
        SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
        
        Properties mappings = new Properties();
        /**
         *  : , 
         *  : 
         */
        mappings.put("java.lang.ArithmeticException", "ok");
        
        // 
        resolver.setExceptionMappings(mappings);
        return resolver;
    }
}


5. 사용자 정의 HandlerExceptionResolver 클래스 처리 이상


글로벌 예외 처리 클래스에서 HandleExceptionResolver 인터페이스 구현
@Configuration
public class GlobalException implements HandlerExceptionResolver {

    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
            Exception ex) {
        ModelAndView mv = new ModelAndView();
        // , 
        if(ex instanceof ArithmeticException) {
            mv.setViewName("ok");
        }
        // 
        mv.addObject("error", ex.toString());
        return null;
    }

}

junit 단원 테스트

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes= {App.class})
public class UserServiceTest {
    
}

@RunWith: 이니시에이터 SpringJUnit4ClassRunner.class,junit와spring 환경을 통합합니다
@SpringBootTest(classes= {App.class}) 1.현재 클래스가 springBoot인 테스트 클래스 @SpringBootTest(classes={App.class}) 2.SpringBoot 시작 클래스 로드, SpringBoot 시작

핫 배포:


spring-boot-devtools는 보통true를 설정하고 프로젝트를 계승하면 아래로 전달하지 않습니다.

좋은 웹페이지 즐겨찾기