본문 바로가기

Spring

Spring) Annotation의 개념과 종류


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 데이터베이스에서 실제 사용하지 않는 것을 지정, 임시값으로 활용

 


참고 자료

https://dejavuhyo.github.io/posts/spring-annotation/

https://melonicedlatte.com/2021/07/18/182600.html



Calendar
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
더보기
Archives
Visits
Today
Yesterday