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 보다 생성자 주입 방식 권장