본문 바로가기
Spring

[Spring] Annotation

by BENGGRI 2021. 1. 19.
반응형

Annotation

코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행
프로그램에 추가적인 정보를 제공해주는 메타데이터

 

자주 사용하게 되는 Spring Annotation

Annotation 설명 사용
@Controller 웹 어플리케이션에서 웹 요청과 응답을 처리하는 Class 에 사용
(프리젠테이션 레이어)
Controller Class
@Service 비즈니스 로직을 가진 Class 에 사용(서비스 레이어) Service Class
@Repository 영속성을 가지는 속성(퍼시스턴스 레이어) DAO 같은 DB 관련 Class
@Component 개발자가 직접 작성한 Class 를 Bean 으로 등록하기 위한 Annotation 그 외 사용하고 싶은 Class

 

Spring Annotation

꾸준히 추가할 예정

@ComponentScan

  • @Component, @Controller, @Service, @Repository, @Configuration Annotation 이 있는 Class Bean 들을 찾아 Context 에 bean 등록을 한다

@Component

  • Component-scan 선언에 의해 특정 패키지 안 클래스들을 스캔하고, @Component Annotation 이 있는 Class 를 Bean 인스턴스로 생성
  • @Component 구체화 -> @Controller, @Service, @Repository

@Bean

  • 개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean 으로 등록할 때 사용

@Autowired

  • field, setter method, constructor 에서 사용
  • Type 에 따라 자동으로 Bean 주입

@Inject

  • @Autowired 와 비슷한 역할

@Resource

  • Autowired 와 마찬가지로 Bean 객체를 주입
  • Autowired 는 타입으로 주입하지만 Resource 는 이름으로 주입

@Controller

  • 웹 어플리케이션에서 웹 요청과 응답을 처리하는 Class 에 사용
  • Spring MVC 에서 Controller
  • API 와 view 를 동시에 사용

@RestController

  • Spring Controller 중 view 를 응답하지 않는 Controller
  • method 의 반환 결과를 JSON 으로 반환

@RequestMapping

  • 요청 URL 을 어떤 method가 처리할지 mapping 해주는 Annotation
  • Controller Class 나 Controller Class 의 method 에 적용
  • value : url
  • method : HTTP Method

@GetMapping, @PostMapping, @PutMapping, @DeleteMapping

  • @RequestMapping 의 Http Method 를 명시적으로 표현
  • @RequestMapping(value="", method=RequestMethod.GET)
  • @RequestMapping(value="", method=RequestMethod.POST)
  • @RequestMapping(value="", method=RequestMethod.PUT)
  • @RequestMapping(value="", method=RequestMethod.DELETE)
  • 등 과 같다

@Service

  • 비즈니스 로직을 가직 Class 에 사용

@Transactional

  • DB Transaction을 설정하고 싶은 method 에 Annotation 적용
  • method 내부에서 DB 로직이 전부 성공하면 Commit
  • 하나라도 실패할 경우 Rollback 해주는 역할

@Repository

  • DAO Class 에 사용

@EnableAutoConfiguration

  • Spring Application Context 를 만들 때 자동으로 설정하는 기능
  • classpath 의 내용을 기반으로 자동 생성

@Configuration

  • Class 에 적용 후 @Bean 을 해당 Class 의 method 에 적용하면 @Autowired 로 Bean 을 사용할 수 있다

@Required

  • setter method 에 적용할 경우 Bean 생성 시 필수 parameter 임을 명시

@Qualifier("id")

  • @Autowired 와 같이 사용
  • 같은 타입의 Bean 객체가 있을 경우 해당 아이디를 적어 원하는 Bean 이 주입될 수 있도록 한다

@PostConstruct, @PreConstruct

  • 의존 객체를 생성한 후 초기화 작업을 위해 객체 생성 전/후 실행해야할 method 에 작성

@PreDestroy

  • 객체를 제거하기 전에 해야할 작업을 수행

@PropertySource

  • 해당 property 파일을 Environment로 로딩

@ConfigurationProperties

  • 설정 파일 load
  • default 는 classpath:application.properties 파일

@Lazy

  • 지연 로딩
  • @Component, @Bean Annotation 과 함께 사용
  • Class 가 load 될 때 Spring 에서 바로 Bean 등록을 마치는 것이 아니라 실제로 사용될 때 loading 이 이뤄지게 하는 방법

@Value

  • Properties 에서 값을 가져와 적용할 때 사용

@CookieValue

  • Cookie 에 등록된 값을 parameter 로 전달 받을 수 있는 방법

@CrossOrigin

  • CORS 보안 관련
  • 브라우저에서 리소스를 현재 origin 에서 다른 곳으로 Ajax 요청을 방지

@ModelAttribute

  • view 에서 전달해주는 parameter 를 Class 의 멤버변수로 Binding 해주는 역할

@SessionAttributes

  • Session 에 data 를 등록할 때 사용

@Valid

  • 유효성 검증이 필요한 객체임을 선언

@InitBinder

  • @Valid Annotation 으로 유효성 검증이 필요하다고 한 객체를 가져오기전에 수행해야할 method를 지정

@RequestAttribute

  • Request 에 등록된 속성 값을 가져올 수 있다

@RequestBody

  • 요청 데이터를 Class 나 model 로 매핑하는 역할

@RequestHeader

  • Request Header 의 값을 가져오는 역할
  • Method Parameter 에 사용

@RequestParam

  • Request Parameter 를 가져오는 역할
  • Method Parameter 에 사용

@RequestPart

  • Reuqest MultipartFile 을 Binding 하는 역할

@ResponseBody

  • 요청에 대한 응답을 JSON 혹은 XML 로 할 수 있게 해주는 역할
  • view 가 아닌 JSON 형태의 값을 응답할 경우 문자열을 리턴하면 HTTP response header 가 아닌 response body 에 위치하게 하는 역할
  • context 에 설정된 viewResolver 를 무시

@PathVariable

  • URL 에서 특정값을 method parameter 로 전달하는 역할

 

생각보다 내용이 훨씬 많아서 큰일이다.
반응형

댓글