많이 쓰는 Spring Framework Annotation 정리 (Summary of Annotations Frequently Used in Spring Framework )

Aaaalpooo
5 min readOct 23, 2018

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 에서 쓰인다. 데이터베이스에 접근하는 메서드를 가지고 있는 클래스에서 쓰인다고 볼 수 있다.

--

--