Spring에서 수동으로 빈을 등록할 때에는 @Configuration 클래스 안에서 @Bean을 사용해야 합니다. 이번에는 왜 @Configuraiton 클래스 안에서 @Bean을 사용해야 하는지 살펴보도록 하겠습니다. 1. @Configuration 안에 @Bean을 사용해야 하는 이유, proxyBeanMethods [ @Configuration 안에 @Bean을 사용해야 하는 이유 ] @Bean 어노테이션을 이용한 수동 빈 등록 스프링에서는 일반적으로 컴포넌트 스캔을 사용해 자동으로 빈을 등록하는 방법을 이용한다. 하지만 @Bean 어노테이션을 사용해 수동으로 빈을 등록해야 하는 경우도 있다. 대표적으로 다음과 같은 경우에 @Bean으로 직접 빈을 등록해준다. 개발자가 직접 제어가 불가능한 라이브..
SonarQube 유료 버전의 기능으로 Pull Request에 대해 정적 분석 코멘트를 남겨주는 Pull Request Decoration이 있습니다. 하지만 무료 플러그인을 사용하면 유료 버전이 아니여도 해당 기능을 사용할 수 있는데, 이번에는 해당 작업 과정을 살펴보도록 하겠습니다. 1. 소나큐브 PR 데코레이션 소개 및 동작 흐름 [ PR 데코레이션 소개 ] SonarQube 유료 버전의 기능으로 Pull Request에 대해 정적 분석 코멘트를 남겨주는 Pull Request Decoration이 있다. 해당 기능은 다음과 같이 작성한 Pull Request에 대해 정적 분석한 정보를 보여준다. 추가로 GitHub의 작업 내역에서 다음과 같이 분석한 내용을 볼수도 있다. 문제는 이러한 기능이 기..
이번에는 자바 언어에서 부모 클래스의 메소드를 오버라이딩 할 때 더 큰 범위의 접근 제어자만 가능한 이유 또는 더 좁은 범위로 변경할 수 없는 이유에 대해 알아보도록 하겠습니다. 기본적이지만 상당히 중요한 내용인만큼 꼭 이해를 하고 넘어가면 좋을 것 같습니다! 1. 부모 클래스의 메소드 오버라이딩이 더 큰 범위의 접근 제어자만 가능한 이유 or 더 좁은 범위로 변경할 수 없는 이유 [ 예시 코드로 상황 소개 ] 예를 들어 다음과 같은 Animal 클래스와 public으로 선언된 bark 메소드가 있다고 하자. public class Animal { public void bark() { System.out.println("동물이 짖는다."); } } 그리고 Animal 클래스를 상속받는 Dog 클래스가 있..
공부를 하다보면 런타임 의존성과 컴파일타임 의존성이라는 얘기가 나옵니다. 그런데 이와 관련되어 잘 정리된 글이 없어서 많은 분들이 이해하는데 어려움을 겪는 것 같습니다. 그래서 이번에는 의존성이 무엇인지 알아보고 런타임 의존성과 컴파일타임 의존성에 대해 정리해보도록 하겠습니다. 아래의 내용 중 일부는 오브젝트에서 참고하였습니다. 1. 의존성(Dependency)이란? 컴파일타임 의존성과 런타임 의존성의 차이 및 비교 [ 의존성(Dependency)이란? ] 의존성(Dependency)이란? 객체의 세계에서 협력은 필수적이며, 객체가 협력한다는 것은 객체 간의 의존성이 존재한다는 것이다. 여기서 의존성이란 파라미터나 리턴값 또는 지역변수 등으로 다른 객체를 참조하는 것을 의미한다. 예를 들어 비밀번호 값을..
최근에 어디에선가 API에 매핑되는 컨트롤러와 메소드를 찾는 방법이 있냐는 질문을 보게 되었습니다. 마침 최근에 디스패처 서블릿 코드를 보면서, 디스패처 서블릿이 어떻게 컨트롤러로 요청을 위임하는지 알게 되었는데, 이번에는 어떻게 이러한 문제를 해결할 수 있는지 살펴보도록 하겠습니다. 1. HandlerMapping과 HandlerMethod 간단히 살펴보기 [ 핸들러 매핑(HandlerMapping) ] 핸들러 매핑(HandlerMapping)과 RequestMappingHandlerMapping 클래스 스프링은 컨트롤러와 메소드 정보를 관리하고 있다가, 요청이 왔을 때 디스패처 서블릿이 어느 컨트롤러가 이를 처리해야하는지 식별하고 위임한다. 컨트롤러에는 @RequestMapping 관련 어노테이션이 ..