기록/BACKEND

[Spring] Annotation 정리

5월._. 2022. 5. 3.
728x90

@Controller Presentation Layer의 MVC Controller에 사용한다.
스프링 웹 서블릿에 의해 웹 요청을 처리하는 컨트롤러 빈으로 선정한다.
@Service Service Layer 클래스에 사용한다.
@Repository DAO 또는 Repository 클래스에 사용한다.
DataAccessException 자동변환과 같은 AOP 적용대상을 선정하기 위해 사용한다.
@Component @Repository, @Service, @Controller 의 레이어 구분을 적용하기 어려운 일반적인 경우에 설정한다.
@Scope component의 scope을 설정한다. 기본값은 singleton이다.
@Configuration 설정 클래스임을 명시한다.
@Bean 스프링 컨테이너가 관리하는 자바객체로 수동 지정한다. 메소드 이름으로 빈 이름이 결정되므로 항상 unique하게 정해야 한다.
@Configuration으로 지정된 클래스에 작성한다.
@Autowired 스프링 프레임워크에서 지원하는 dependency 정의 용도의 어노테이션이다. 타입에 맞춰서 연결한다. 
멤버변수, setter, constructor, 일반 method에 사용가능하다.
@Qualifier("name") 동일한 타입의 bean이 여러개일 경우 name으로 식별할 수 있도록 한다.
@RequestMapping("url-pattern") ("url-pattern")
(value="{url-pattern1, url-pattern2})
(value="{url-pattern"}, method=RequestMethod.POST)
요청된 url을 매핑한다. method를 지정하면 그 method에서만 실행된다.
@PostMapping("url-pattern") 해당 url을 post method일때 매핑한다.
@GetMapping("url-pattern") 해당 url을 get method일때 매핑한다.
@PutMapping 해당 url을 put method일때 매핑한다. (rest controller에서 사용)
@DeleteMapping 해당 url을 delete method일때 매핑한다. (rest controller에서 사용)
@RequestParam("key") ("key")
(value="key", required=false)
(value = "key", required = false, defaultValue = "___")
HTTP 요청 파라미터를 매핑한다. 
@PathVariable("key") uri 템플릿변수에 접근할 때 사용한다. uri에 있는 변수를 가져올 수 있다.
@CookieValue HTTP 쿠키를 매핑한다.
@RequestHeader HTTP 요청 헤더를 매핑한다.
@RequestBody HTTP 요청의 body 내용에 접근할 때 사용한다.
예) JSON데이터를 원하는 타입으로 바인딩해서 받을 수 있다.
@ModelAttribute DTO를 받을 때 모델명을 지정하기 위해 사용한다. 이 어노테이션을 사용하지않으면 기본적으로 클래스 이름을 모델명으로 사용한다. 
@SessionAttributes("key") HTTPSession을 사용해 직접 세션을 추가하지 않고 "key"가 똑같은 데이터를 model에 추가하면 자동으로 데이터가 세션에 추가된다.
@SessionAttribute key값으로 세션 데이터를 가져오면서 매핑한다. 형변환이 자동으로 된다.
@ControllerAdvice 컨트롤러에 예외가 발생하면 이 어노테이션을 붙인 클래스로 가서 맞는 예외처리메서드가 있는지 확인한다.
@ExceptionHandler 어떤 클래스의 예외를 처리할지 정한다.
@ResponseStatus 예외를 처리할 HTTP Status을 지정한다.
@CrossOrigin("*") 기본적으로 모든 도메인, 모든 요청방식에 대해 허용하게 됨. 이 어노테이션을 붙이지 않으면 동일한 출처의 Origin만 리소스를 공유할 수 있다.
예시처럼 "*"을 넣으면 모든 주소에 허용한다는 뜻이다.
@RestController 컨트롤러가 rest 방식을 처리하기 위한 것임을 명시한다. 
@ResponseBody 해당 메서드는 view가 아닌 데이터를 전달한다고 명시한다. @RestController에는 해당 어노테이션을 붙일 필요가 없다.
@Transactional 메서드, 클래스, 인터페이스 위에 사용한다. 적용된 범위 내에서 프록시 객체가 생성되어 자동으로 commit과 rollback을 진행한다.

 

'기록 > BACKEND' 카테고리의 다른 글

[SpringBoot] Swagger 3.x 적용  (0) 2022.05.10
[SpringBoot] MySql & MyBatis 설정하기  (0) 2022.05.09
[Spring] 프로젝트 실행 순서  (0) 2022.05.02
[SpringBoot] JSP사용하기(sts 3)  (0) 2022.05.01
[Spring] REST API  (0) 2022.04.29

댓글