What Is Annotations?
어노테이션이란?
@ 사인 하나로 많은 컨텍스트들을 제공 받을 수 있게 한다.
@ 사인으로 시작하는 것을 어노테이션 이라고 한다.
어노테이션이 나오기 전에는 xml로 많은 컨텍스트들이 관리 되었는데, 요즘은 어노테이션을 사용함으로써, Spring Framework에서 제공하는 많은 컨텍스트들을 활용 할 수 있다.
summary of annotations that frequently used in spring framework.
자주 쓰는 어노테이션 정리
의존성 주입용도
@Required
Required 어노테이션을 사용하여 optional 하지 않은, 꼭 필요한 속성들을 정의한다. Controller 클래스의 메서드에서, requestBody로 가져올 만한 것들이나, PathVariable로 가져올만한 꼭 필요한 값 들에 쓰일 수 있을것 같다…
@Autowired
속성(field), setter method, constructor(생성자)에서 사용한다. 무조건적인 객체에 대한 의존성을 주입시킨다. 이 어노테이션을 사용할 시, 스프링이 자동적으로 값을 할당한다. Controller 클래스에서 DAO나 Service에 관한 객체들을 주입 시킬 때 많이 사용한다.
@Inject
Autowired 어노테이션과 비슷한 역할을 한다. 더욱 스탠다드한 어노테이션이라고 만 알고있다. Autowired는 스프링 에서만 쓰이는 어노테이션인듯 한다.
컨트롤러 관련
@Controller
Spring의 Controller를 의미한다. Spring MVC에서 Controller클래스에 쓰인다.
@RestController
Spring에서 Controller 중 View로 응답하지 않는, 컨트롤러를 의미한다.
이 어노테이션이 적혀있는 컨트롤러의 메서드는 HttpResponse로 바로 응답이 가능하다. @ResponseBody 역할을 자동적으로 해주는 어노테션이다.
@RequestMapping
Spring의 컨트롤러 혹은 그 메서드의 URI를 정의하는데 쓰인다.
요청을 받는 형식인 GET, POST, PATCH, PUT, DELETE 를 정의하기도 한다.
요청 받는 형식을 정의하지 않는다면, 자동적으로 GET으로 설정된다.
@PathVariable
URI에서 / 다음으로 넘어오는 값들을 파싱하는 어노테이션이다.
@RequestMapping(value = "/some/path/{id}", method = RequestMethod.GET)
public ResponseEntity<?> someMethod(@PathVariable int id) {// some logic here}
@RequestBody
POST나 PUT, PATCH로 요청을 받을때에, 요청에서 넘어온 body 값들을 자바 타입으로 파싱해준다.
@RequestMapping(value = "/book", method = RequestMethod.POST)
public ResponseEntity<?> someMethod(@RequestBody Book book) {// we can use the variable named book which has Book model type.
try {
service.insertBook(book);} catch(Exception e) { e.printStackTrace();
}
// return some response here}
@RequestParam
?moviename=thepurge 와 같은 쿼리 파라미터를 파싱해준다.
@RequestMapping(value = "/search/movie", method = RequestMethod.GET)
public ResponseEntity<?> someMethod(@RequestParam String moviename) {// request URI would be like '/search/movie?moviename=thepurge'try {
List<Movie> movies = service.searchByMoviename(moviename);} catch(Exception e) { e.printStackTrace();
}// return some response here}
@ResponseBody
HttpMessageConverter 를 이용하여 JSON 혹은 xml 로 요청에 응답할수 있게 해주는 어노테이션이다. 이미 RestController 어노테이션이 붙어 있다면, 쓸 필요가 없다. 허나 그렇지 않은 단순 컨트롤러라면, HttpResponse로 응답 할수 있게 해준다.
데이터 접근 관련
@Service
Service Class 에서 쓰인다. 비즈니스 로직을 수행하는 클래스라는 것을 나타내는 용도이다.
@Repository
DAO class 에서 쓰인다. 데이터베이스에 접근하는 메서드를 가지고 있는 클래스에서 쓰인다고 볼 수 있다.