반응형
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 로 전달하는 역할
생각보다 내용이 훨씬 많아서 큰일이다.
반응형
'Spring' 카테고리의 다른 글
[Spring] Spring Framework MVC 커뮤니티 사이트Tutorial - 1 (0) | 2021.01.20 |
---|---|
[Spring] Spring Framework MVC 커뮤니티 사이트 Tutorial 시작 (0) | 2021.01.20 |
[Spring] context xml 분리 (0) | 2021.01.18 |
[Spring] web.xml 설명 (0) | 2021.01.18 |
[Mybatis] Mybatis Procedure 호출 (0) | 2021.01.15 |
댓글