Spring Annotation
어노테이션
Spring Annotation
- 주석이라는 사전적 의미가 있다.
- 컴파일 혹은 런타임에 해석된다.
- @를 이용한 주석, 자바코드에 주석을 달아 특별한 의미를 부여한 것
- 메타데이터(실제데이터가 아닌 Data를 위한 데이터)라고 불리고 JDK5부터 등장
- 기존에는 XML로 컨텍스트들을 관리하였는데 XML이 너무 많아지면 유지보수성이 낮아진다.
- 그래서 설계시 확정되는 부분은 Annotation 기반 설정으로 개발의 생산성을 높인다.
자주 쓰는 Annotation 정리
의존성 주입용도
@ComponentScan
- @Component와 @Service, @Respository, @Controller, @Configuration 이 붙은 클래스 Bean들을 찾아서 Context에 Bean등록을 해주는 어노테이션
- 어노테이션을 사용하지 않는다면 ApplicationContext.xml에 Bean을 직접 등록해야 한다.
@Required
- Optional 하지 않은, 꼭 필요한 속성들을 정의한다.
- Setter메소드에 적용해주면 빈 생성시 필수 프로퍼티 임을 알려준다.
@Autowired
- Field(속성), Setter Method, Constructor(생성자)에서 사용하다.
- 스프링이 IoC 컨테이너 안에 존재하는 Bean을 자동으로 주입한다.
@ Qualifier
- 같은 타입의 Bean이 두개 이상이 존재하는 경우에 스프링이 어떤 Bean을 주입해야 할지 모르기 때문에 스프링 컨테이너를 초기화하는 과정에서 예외가 발생된다.
- 이러한 경우 @Qualifier을 @Autowired와 함께 사용하여 정확히 어떤 Bean을 사용할지 지정하여 특정 객체를 주입할 수 있도록 한다.
@Inject
- Autowired 어노테이션과 비슷한 역할을 한다.
- 특정 프레임워크에 종속되지 않은 어플리케이션을 구성하기 위해서 @Inject를 사용할 것을 권장
컨트롤러 관련
@Controller
- 스프링 프레임워크에서 Controller 객체라는 것을 알려준다.
- API와 View를 동시에 사용하는 경우에 사용
- API 서비스로 사용하는 경우에는 @ResponseBody 를 사용하여 객체 반환
- View(화면) return 이 주된 목적
@RestController
- View가 필요없는 API만 지원하는 서비스에서 사용
- data(json, xml 등) return 이 주된 목적
- @RestController = @Controller + @ResponseBody
@RequestMapping
- Controller 객체 안에 있는 메소드와 클래스에 사용하는 어노테이션
- URI 요청이 RequestMapping(value=”“)에 value값이 일치하면 해당 클래스나 메소드가 실행된다.
@PathVariable
- 메소드 파라미터 앞에 사용하면 해당 URL에서 {특정값}을 변수로 받아 올 수 있다.
@RequestBody
- 요청 문자열이 그대로 파라미터로 전달되도록 하는 어노테이션
- 요청이 온 데이터(JSON, XML, ..)를 바로 클래스나 Model로 매핑하기 위한 어노테이션
@RequestParam
- 화면단에서 요청을 통해 넘어온 값을 Controller에서 받을 때 @RequestMapping으로 명시된 메소드의 파라미터에 @RequestParam을 사용한다.
- 요청에서 특정한 파라미터 값을 찾아낼 때 사용하는 어노테이션
@ResponseBody
- 메소드와 리턴타입에 사용
- 리턴 타입이 HTTP의 응답 메시지로 전송이 되도록 하는 어노테이션
데이터 접근 관련
@Service
- DAO 클래스에서 사용
- DAO 객체임을 알려주는 어노테이션
@Repository
- 비지니스 서비스, 서비스 레이어, 비지니스 로직이 들어가는 Service로 등록
- Service 클래스에서 사용
- Service 객체임을 알려주는 어노테이션