1. 어노테이션이란
클래스나 메소드 상단에 필요한 정보를 설정하여 스프링 컨테이너 기동 시 해당 정보를 활용함
2. 어노테이션 종류
@Autowired
필드, setter 메소드, 생성자에서 사용한다. 객체에 대한 의존성을 주입한다. 이 어노테이션을 사용하면 스프링이 자동으로 값을 할당한다.
다시 설명한다. 스프링이 빈의 요구 사항과 매칭되는 Application Context 상에서 다른 빈을 찾아 빈 간의 의존성을 자동으로 만족시키도록 하는 수단이다.
- 클래스에 디폴트 생성자만 있다면 어노테이트할 것이 없음
- 클래스에 논-디폴트 생성자만 있다면 스프링은 해당 생성자를 call, @Autowired는 선택사항임
-
클래스에 생성자가 여러개면
1) 아큐먼트가 없는 생성자가 존재할 경우 이 생성자를 호출
2) 아니면 스프링이 사용할 것에 @Autowired해야 함
@Autowired시 주입할 의존 객체가 있어야 하는데 만약 의존 객체가 없다면 Exception이 발생한다. 이 때는 requied를 통해 필수 여부를 지정할 수 있다.
@Autowired가 아닌 @Resource를 사용할 수도 있는데 @Autowired(org.springframework.beans.factory.annotation.Autowired)는 스프링 자체 어노테이션이고 @Resource(javax.annotation.Resource)는 자바 표준 어노테이션이다.
@Bean
Bean 생성을 하는 메소드에 붙인다. 메소드 이름이 아이디이다.
@Component
Contoller, Service, Repository를 포함하고 있다.
@Controller
스프링 MVC의 기본이 되는 어노테이션이다. 사용자에게 ViewResolver를 통한 text/html 형식의 뷰 페이지 노출을 위해 뷰 이름을 리턴한다.
@PathVariable
자세히 알아보자.
@Required
꼭 필요한 속성을 정의한다.
@Resource
필요한 자원을 자동으로 연결하기 위해 사용한다.
@RestController
RESTful 컨트롤러이다. Controller와 달리 뷰 페이지의 노출이 아니라 HTTP Response Body에 직접 쓰여진다. text/html인 Controller와 달리 MessageConverter를 통해 application/json, text/plain 등으로 리턴된다.
@PropertySource
Environment 객체에 Property 값이 주입된다.
@PropertySource("classpath:/my.properties")
@ Value
- 생성자 인젝션
- 메소드 인젝션
- 필드 인젝션