Spring
Spring) Annotation의 개념과 종류
김코식
2022. 12. 1. 00:06
Annotation
@를 이용하여 자바코드에 추가하여 의미를 부여하는 것으로 프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공하고, 코드에 정보를 추가하는 정형화된 방법
어노테이션을 사용하면 코드가 깔끔해지고 재사용이 가능
즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터를 위한 데이터)
자주 사용하는 Annotation
spring Annotation
@Component | 생성한 class를 Spring Bean으로 등록할 때 사용 |
@Bean | 제어가 불가능한 외부 라이브러리 등의 것들을 Bean으로 등록할 때 사용 |
@Controller | Spring에게 해당 Class가 Controller의 역할을 한다고 명시 |
@RequestHeader | Request의 header값을 가져올 때 사용 |
@RequestMapping | @RequestMapping(value=”“)와 같은 형태로 작성하며, 요청 들어온 URI의 요청과 Annotation value 값이 일치하면 해당 클래스나 메소드가 실행, Controller 객체 안의 메서드와 클래스에 적용 가능 |
@RequestParam | URL에 전달되는 파라미터를 메소드의 인자와 매칭시켜, 파라미터를 받아서 처리 |
@RequestBody | Body에 전달되는 데이터를 메소드의 인자와 매칭시켜, 데이터를 받아서 처리 |
@ModelAttribute | HTTP Body 내용과 HTTP 파라미터의 값들을 Getter, Setter, 생성자를 통해 주입하기 위해 사용 일반 변수의 경우 전달이 불가능하기 때문에 model 객체를 통해서 전달 |
@ResponseBody | 메소드에서 리턴되는 값이 View 로 출력되지 않고 HTTP Response Body에 직접 사용 return 시에 json, xml과 같은 데이터를 return |
@AutoWired | Bean을 주입받기위해 사용 Spring Framework가 Class를 보고 Type에 맞게 Bean 주입 |
@GetMapping | RequestMapping(Method=RequestMethod.GET)과 똑같은 역할 |
@PostMapping | RequestMapping(Method=RequestMethod.POST)과 똑같은 역할 |
@SpringBootTest | Spring Boot Test에 필요한 의존성을 제공 |
@Test | JUnit에서 테스트 할 대상을 표시 |
Lomvok Annotation
코드를 줄여주어 가독성을 높힐 수 있는 라이브러리
@AllArgsConstructor | 모든 필드를 파라미터로 가지는 생성자 생성 |
@NoArgsConstructor | 파라미터가 없는 기본 생성자 생성 |
@RequiredArgsConstructor | final,@NonNull 인 필드값만 파라미터로 받는 생성자 생성 |
@Setter | Class 모든 필드에 Setter 메소드 생성 |
@Getter | Class 모든 필드에 Getter 메소드 생성 |
@ToString | Class 모든 필드에 ToString 메소드 생성 |
@Data | @ToString ,@Getter, @Setter 등 모두 사용한 것 과 같은 기능 |
Jpa Annotation
@Entity | 데이터베이스트 테이블과 1대1 매칭 |
@Id | 테이블 컬럼의 기본키 설정 |
@Column | 테이블 컬럼 설정 // @Entitiy 사용시 생략 가능 |
@GeneratedValue | 기본키에 저장된 auto increment 등의 속성을 지정 |
@EmbeddedId | 테이블 컬럼의 복합키에 설정 |
@Transient | 데이터베이스에서 실제 사용하지 않는 것을 지정, 임시값으로 활용 |
참고 자료