본문 바로가기

백앤드 개발/Java & Spring

[Spring boot] 자주 쓰는 어노테이션

어노테이션(Annotation) 이란?

자바 소스 코드에 메타 데이터 (유용한 정보) 를 추가할 때 사용되는 키워드로 다음 역할 수행

  • 컴파일러를 통한 문법 체크
  • 빌드 시 코드 필요한 코드 자동 생성
  • 런타임 시, 특정 기능 실행하도록 정보 제공

 

Config

  • @Configuration: 해당 클래스가 스프링의 설정 클래스임을 명시. @Bean 어노테이션이 적용된 메서드를 포함.
  • @Bean: Spring Container 의 Bean 으로 등록할 때 사용. Bean 이름은 메서드명으로 등록됨. @Configuration 과 함께 사용.
  • @Component: 해당 클래스를 Bean 으로 등록. 반환된 객체를 Bean으로 등록하는 @Bean과 달리 클래스를 Bean 으로 등록. @Service, @Repository, @Controller, @Configuration 에는 @Component 가 포함됨.
  • @Autowired: 의존성 주입 어노테이션. Bean 으로 등록된 객체를 자동으로 찾아 의존성 주입.
  • @EnableWebSecurity: @Configuration과 함께 사용되며 Spring Security 의 기본 설정을 활성화. SecurityFilterChain 이 포함됨.

 

Controller

  • @Controller: 스프링 MVC 패턴에서 컨트롤러 정의. 주로 View의 이름을 반환.
  • @RestController: @Controller 의 확장 어노테이션. 주로 RESTful API 형식의 json 데이터 반환.
  • @GetMapping, @PostMapping, @PutMapping, @DeleteMapping: HTTP GET, POST, PUT, DELETE 요청 처리.
  • @RequestMapping: 해당 URL 과 메서드 매핑.
  • @PathVariable: HTTP 요청시 URL의 / 뒷 부분이 인식되어 매개변수로 사용.
  • @RequestParam: HTTP 요청시 URL 의 쿼리 방식으로 매개변수 정의
  • @RequestBody: HTTP 요청시 데이터가 포함된 경우, 데이터와 객체를 매핑할 때 사용.
  • @PreAuthorize: Spring Security 에서 제공하는 어노테이션. 메서드에 대한 접근 제어.

 

Service

  • @Service: 스프링 MVC 패턴에서 서비스 클래스 정의.
  • @Transactional: 데이터베이스 트랜잭션 관리 어노테이션. 트랜잭션 범위와 롤백 조건 등을 설정.

 

Repository

  • @ Repository: 스프링 MVC 패턴에서 리포지토리(DB 상호작용) 클래스 정의.

 

Entity

  • @Entity: DB 에 있는 테이블 정의 클래스.
  • @Table: 해당 클래스와 DB 클래스 간 매핑 설정.
  • @Id: DB 기본키 정의.
  • @Column: 해당 필드와 DB 테이블 칼럼 간의 매핑 설정.
  • @GeneratedValue: 기본키 생성 전략 제공.
  • @ManyToOne: 다대일 관계 매핑. @JoinColumn 과 사용해 외래키 지정.
  • @JoinColumn: name = "외래키" 와 같이 외래키 칼럼 정의.
  • @OneToMany: mappedBy = "변수명" 으로 외래키 칼럼 정의.
  • @ManyToMany: 다대다 관계 매핑. @JoinTable (name="중간 테이블명", joinColumns = "조인 칼럼 정보", inverseJoinColumns = "조인 칼럼 정보") 와 같이 사용

 

Validation

  • @Valid: Dto 객체 유효성 검사. 주로 @RequestBody 에서 사용.
  • @Validated: @PathVariable 변수의 유효성을 검사.
  • @Email: 이메일 형식 유효성 검사.
  • @Nullable, @NotNull, @Null: Null 에 대한 유효성 검사.
  • @NotNull, @NotEmpty, @NotBlank: Not Null 에 대한 유효성 검사.

 

Lombok

  • @Getter, @Setter: 해당 클래스 필드 값의 Getter 메서드와 Setter 메서드 생성. @Setter 의 경우 보안적 취약점이 있을 수 있으므로 확인 후 사용하는 것을 권장.
  • @ToString: toString() : 메서드 생성.
  • @AllArgsConstructor: 해당 클래스의 모든 파라미터를 가지는 생성자 생성.
  • @NoArgsConstructor: 파라미터가 없는 생정자 생성.
  • @RequiredArgsConstructor: 초기화 되지 않은 final 타입의 변수에 대한 생성자 생성.
  • @Data: @Getter, @Setter  +  @ToString + @RequiredArgsConstructor 기능 제공.
  • @Builder: 빌더 패턴의 객체 생성.

 

Jackson

  • @JsonIgnore: 특정 필드를 직렬화 또는 역직렬화 대상에서 제외.
  • @JsonProperty: 특정 필드를 다르게 나타낼 때 사용.

 

참조

https://velog.io/@yeonssu/Spring-Boot-Annotation-%EC%A0%95%EB%A6%AC#-data

 

[Spring Boot] 자주 사용하는 Annotation 정리

💡 Spring에서 자주 사용하는 Annotation💡 Testing 관련 Annotation 💡 Handler Method Annotation 💡 Handler Method Parameter Annotation 💡 Entity 관련 Annotation

velog.io

https://ittrue.tistory.com/156

 

[Java] 어노테이션(Annotation) 개념 정리 및 종류

Intro 프로그래밍에서 주석은 개발자의 입장에서 더 직관적이고 코드를 이해하기 쉽게 하며, 다른 사람에게 설명할 수 있도록 정보를 제공하는 역할이다. 어노테이션 또한 주석과 비슷한 역할을

ittrue.tistory.com