Spring Boot가 자동으로 생성하여 주입하는 각종 Bean이 잘 주입되었는지 우선 확인해야한다.
잘 주입되지 않았다면 아예 해당 객체가 호출이 안되어 사용이 불가능한 상황이 발생할 수 있기 때문에, Bean 생성 및 주입과 관련된 코드들이 잘 작성되었는지 반드시 점검해야 한다. 특히 Component가 붙은 어노테이션이 잘 붙어있는지 먼저 확인한다.
한 가지 예시로, 커스텀 filter를 만들어 적용할 때, SuccessHandler의 Bean이 제대로 등록되지 않으면 인증 및 인가에 성공하더라도 호출 자체를 안하는 문제가 발생할 수 있다.
위와 같은 맥락으로, Bean을 생성할 때 사용하는 yml파일에서 빠진내용은 없는지, 순서는 올바른지 확인해야한다.
예를들어, yml의 하단에 위치한 설정의 Bean을 생성할 때, 그 Bean이 생성되기 전에 주입받아야 하는 상황이 오면 정상적으로 주입되지 않아 제대로 동작하지 않는다.
따라서 에러나 예외를 추적하다가 Bean생성 및 주입과 관련된 문제를 만나면 Component, 생성자나 Lombok을 확인하고 문제가 없다면 yml파일을 확인 해봐야 한다.
같은 HTTP 메소드로 요청이 오더라도, 안에 담긴 데이터가 JSON, Form-Data, 등등 데이터 형식이 다르게 올수 있다.
따라서 이미지나 영상등 미디어가 올수도 있기 때문에 컨트롤러를 제대로 통과하지 못한다면 데이터 형식을 맞게 처리했는지를 먼저 확인해야 한다.
주로 Repository나 따로 만들어 사용하던 메소드에서 발생하는 문제로, Optional을 반환하는지, List나 Map을 반환하는지 등등을 반드시 확인해야한다.
해당 에러나 예외는 그나마 명시적으로 원인을 표시해주기 때문에 조금만 주의를 기울이면 해결할 수 있다.
최근에 가장 찾는데 고생했던 내용으로, 한 번 문제가 생겼을 때 생각이 잘 닿지 않는 부분이다.
상속 받는 부모의 계층이 여러개일 경우, Override나 Overload를 IDE에서 단축키로 생성할 때 내가 사용해야 할 메소드가 아니라, 이름이 같은 다른 메소드나 부모 또는 조상의 매소드를 호출할 수 있다.
특히 이름이 같은 메소드를 여러개 가지고 있는 부모가 있을 경우, 정확하게 사용하려는 메소드를 Override하지 않으면 Spring Security와 같은 메소드가 아예 호출자체를 하지 않는다.
예를 들어 인증 인가가 끝나고 Success처리할 메소드를 호출하는데, 해당 메소드와 같은 이름의 Overload메소드를 내가 작성하여 사용하고 있었다면 이 메소드는 아예 호출 조차 되지 않는다.
따라서 반드시 라이브러리를 사용하거나 프레임워크를 사용할 땐, 상속 받아 사용하는 메소드가 내가 동작시키고자 하는 그 메소드인지를 정확하게 체크해야한다.