스프링 Annotation(어노테이션) 정리
업무를 하면서 다양하고 많은 Annotation에 대한 이해가 부족해 정리하고자 작성하기로 했다.
Lombok Annotation
@Setter
Class의 모든 필드에 해당하는 Setter 메서드 생성
@Getter
Class의 모든 필드에 해당하는 Getter 메서드 생성
@ToString
Class의 모든 필드에 해당하는 ToString 메서드 생성
@NoArgsConstructor
Class의 기본 생성자 추가
@RequiredArgsConstructor
Final이나 @NonNull인 필드만 파라미터로 받는 생성자 추가
@AllArgsConstructor
Class의 모든 필드 값을 파라미터로 받는 생성자 추가
@EqualsAndHashCode
Equals와 HashCode 메서드를 오버라이딩 하는 어노테이션
@Data
@Setter, @Getter, @ToString, @NoArgsConstructor 등 Lombok에서 제공하는 필드와 관련된 모든 코드 추가 (모든 기능 사용 가능하므로 Risk 존재해서 사용하지 않는 게 좋음)
JPA Annotation
@Entity
실제 DB 테이블과 매핑될 Class
@Table(name = "")
실제 DB의 name에 해당하는 테이블과 매핑(생략할 경우 Class명과 테이블명 매핑)
@Id
해당 테이블의 PK 필드
@Column(name = "")
name에 해당하는 컬럼과 매핑(생략할 경우 필드명과 컬럼명 매핑)
Spring Annotation
@Controller
해당 Class는 Controller란 것을 명시하고 Spring에서 Bean으로 등록 (Bean이란 Spring에서 관리하는 자바 객체)
@Service
해당 Class는 비즈니스 로직을 수행하는 Service란 것을 명시하고 Spring에서 Bean으로 등록
@Repository
해당 Class는 DAO인 것을 명시하고 Spring에서 Bean으로 등록 (Spring에서 지원하지 않는 Exception을 Spring Exception으로 전환)
@Component
해당 Class는 Component란 것을 명시하고 Spring에서 Bean으로 등록 (@Controller, @Service, @Repository의 상위 어노테이션이므로 3가지 전부 @Component으로 대체 가능)
@Bean
개발자가 제어 불가능한 외부 라이브러리 등을 Bean으로 등록
@ComponentScan
@Component, @Controller, @Service, @Repository 가 부여된 Class 들을 검색해서 Bean으로 등록
@RequestMapping(value = "")
URI의 요청이 value와 일치할 경우 해당 클래스나 메서드 실행
@RequestParam(value = "", required = false)
메서드 파라미터 앞에 쓰며 Http 요청의 파라미터 값(value)을 메서드 파라미터로 받음
required 옵션의 Default는 true이며 true일 경우 해당 파라미터가 없을 때 400 에러 발생
@RequestBody
메서드 파라미터 앞에 쓰며 Http 요청의 Body를 자바 객체로 변환해서 매핑된 메서드 파라미터로 전달
@RequestHeader(value = "")
메서드 파라미터 앞에 쓰며 Request의 Header값을 메서드의 파라미터로 받는 어노테이션
@ResponseBody
자바 객체를 Http 요청의 Body로 변환(content-type을 application/json으로 설정 필요)
@RestController
@Controller와 @ResponseBody를 합친 어노테이션
@ModelAttribute
View단에서 전달하는 파라미터를 메서드의 파라미터로 변환해 주는 어노테이션(태그의 name과 클래스의 멤버 변수명, Set 메서드명 일치)
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping
각 Get, Post, Put, Delete, Patch 요청에 대한 Annotation
@Valid
파라미터 객체 앞에 쓰며 유효한 객체인지 검사
@CookieValue(value = "", required = false)
쿠키의 value 값을 받아오며 required의 Default는 true
required = false를 사용하지 않은 상태에서 해당 쿠키값이 존재하지 않다면 500 에러를 발생시키고 사용하면 존재하지 않을 때 null로 받음
@Lazy
Class가 실제 사용될 때 Spring에서 Bean등록을 하게 되는 지연 로딩
@Autowired
Field, Setter, Constructor 3가지에 사용하며 Type에 따라 Bean을 주입
@Qualifier("id")
@Autowired와 같이 쓰며 같은 타입의 Bean 객체가 있을 경우 명시된 ID로 원하는 Bean을 주입하는 어노테이션
@PathVariable
메서드 파라미터 앞에 쓰며 URI에서 특정 값을 메서드 파라미터로 받아오는 어노테이션
특정 값은 URI에서 {}로 감싸고 파라미터 명과 같음
@Transactional
메서드 내부의 DB 트랜잭션 설정하는 어노테이션
@Scheduled(cron = "")
Cron 표현식에 의한 정해진 시간에 메서드를 실행시키는 어노테이션
@Test
Junit에서 테스트할 대상으로 지정
'취업 후 학습' 카테고리의 다른 글
MSSQL 테이블 변수, 임시 테이블 사용하기 (0) | 2023.12.04 |
---|---|
스프링이란? 스프링과 스프링 부트의 차이점은? (0) | 2023.06.20 |
리액트 data.map is not a function 에러 해결 (0) | 2023.05.03 |
파이썬 Pyautogui로 매크로 만들기 (0) | 2023.02.26 |
jQuery로 요소 찾기 (0) | 2023.01.03 |