🥞 BE
home

Spring Annotation

Ref - DevCourse 아영님 4주차 RBF

어노테이션(@) : 컴파일러가 읽는 주석
컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공
실행시(런타임시) 특정 기능을 실행하도록 정보를 제공

@ComponentScan

아래 어노테이션이 붙은 클래스 Bean들을 찾아서 Context에 bean 등록을 해주는 어노테이션
@Component
@Service
@Repository
@Controller
@Configuration

@Bean

개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 만들 때 사용하는 어노테이션
다른 어노테이션들과 다르게 메소드에 붙여 사용
default : 메서드 이름 camel case로 변경한 id로 등록 / name 입력 시 그 값으로 등록

@Configuration

@Bean 을 붙인 메서드들을 Bean으로 등록할 수 있는 어노테이션
→ @Bean 사용하는 클래스는 반드시 @Configuration과 함께 사용되어야함

@Component

개발자가 직접 작성한 Class를 Bean으로 등록 해주는 어노테이션
컴포넌트 스캔을 통해서 감지되어 자동으로 Bean이 등록될 후보 클래스를 명시
Class단위
내부에 @Component 어노테이션을 가지고 있어, 컴포넌트 스캔의 대상
@Controller의 역할을 명시적으로 구분해주기 위해 분리하여 사용(권장)

@Repository

DB관련 로직을 처리하는 계층에 붙이는 어노테이션

@Service

비즈니스 로직을 처리하는 계층에 붙이는 어노테이션

@Controller

Spring MVC의 Controller로 사용되는, 클래스 선언을 단순화 시켜주는 어노테이션

@Autowired

filed , setter, method, constructor에서 사용
Type에 따라 자동으로 bean 주입
Type을 먼저 확인하여 못 찾는 경우 : name에 따라 bean 주입
if) 해당 타입의 bean 객체가 2개 이상 존재할 경우
→ 예외 발생
⇒ 같은 타입의 bean이 두 개 이상 존재하는 경우, 어떤 bean을 주입해야 할지 알 수 없기 때문에 스프링 컨테이너를 초기화하는 과정에서 예외 발생
⇒ @Qualifier를 @Autowired와 함께 사용하여 어떤 bean 사용할지 명시 가능
+) @Autowired를 사용할 경우 순환 참조가 발생할 수 있기 때문에 @Autowired 보다 생성자 주입 방식 권장