Spring Annotation
@Autowired
- 의존성 자동 주입
- java의 reflection 기능을 사용함 - private 멤버여도 상관X
- Spring Context에 등록된 Bean이어야 함
@Controller
- Spring context에 등록되는 객체임을 선언
- Spring에게 이 클래스를 빈으로 등록해달라고 함
- Spring Context가 Bean 생성 ⇨ JavaBean으로 등록됨
- 웹 요청을 처리하기 위해 설계된 컨트롤러 클래스에서 사용
- 스프링 MVC 컨트롤러 역할을 명시적으로 나타냄
- @Component 포함
@Component
- JavaBean으로 등록됨
- 컨트롤러 외 모든 범용 컴포넌트에서 사용
- 단순히 스프링 빈으로 등록할 일반 클래스를 나타냄
- 모든 종류의 스프링 빈 클래스에서 사용할 수 있는 범용 어노테이션
- 스프링의 Component Scan에 의해 자동으로 탐색 됨
- RootConfig ➞
@ComponentScan(basePackages = {"패키지"})
- 패키지 안(하위 패키지 포함)에 있는 @Component 클래스만 스캔함
@RequestMapping
- 수용할 HTTP method 설정 (GET, POST, PUT, DELETE 등)
@RequestMapping(value="/basic", method={RequestMethod.GET, RequestMethod.POST})
Lombok
@Data
- 기본 메서드를 자동으로 생성
- 보일러플레이트 코드를 줄이고 개발 생산성을 높임
- Getter / Setter
- toString()
- equals()
- hashCode()
- RequiredArgsConstructor : final 또는 @NonNull이 붙은 필드들을 초기화하는 생성자를 자동으로 생성
@AllArgsConstructor가 있으면 기본 생성자를 생성X
@Slf4j
- log라는 이름의 로거(Logger) 객체를 자동으로 생성 - 멤버 필드 자동 생성
- SLF4J를 통해 추상화된 방식으로 다양한 로깅 프레임워크를 사용
- 유연한 로깅 구현체 선택이 필요하거나, SLF4J의 추상화된 로깅을 선호할 경우 적합
- 로깅 구현체를 쉽게 교체할 수 있어 유지보수성이 향상
@Log4j
- log라는 이름의 로거(Logger) 객체를 자동으로 생성 - 멤버 필드 자동 생성
- Log4j 로깅 프레임워크를 직접 사용
@RequiredArgsConstructor
- 필수 인자 생성자(Constructor)를 자동으로 생성
final 필드
@NonNull 어노테이션이 붙은 필드
@AllArgsConstructor
- 클래스의 모든 필드를 파라미터로 받는 생성자를 자동으로 생성
@NoArgsConstructor
단위테스트 어노테이션
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {RootConfig.class})
@Log4j