[SpringBoot] @Annotation

2023. 10. 14. 10:02·Web & Android/SpringBoot
목차
  1. 빈 관련
  • 소스코드에 @어노테이션의 형태로 표현하며 클래스, 필드, 메소드의 선언부에 적용할 수 있는 특정기능이 부여된 표현법을 말함
  • 애플리케이션 규모가 커질수록, xml 환경설정이 매우 복잡해지는데 이러한 어려움을 개선시키기 위해 자바 파일에 어노테이션을 적용해서 개발자가 설정 파일 작업을 할 때 발생시키는 오류를 최소화해주는 역할
  • 어노테이션 사용으로 소스 코드에 메타데이터를 보관할 수 있고, 컴파일 타임의 체크뿐 아니라 어노테이션 API를 사용해 코드 가독성도 높여줌

 

@Bean

  • 객체 생성

@Autowired

  • 객체 자동 주입

@Valid

  • validation 실행

@Controller

  • 컨트롤러 클래스 내의 메소드의 리턴 타입으로 문자열을 사용했을 때, 문자열에 해당하는 View를 찾아서 클라이언트에게 반환해준다.

@GetMapping(”/”)

  • @RequestMapping(value=”/”, method=RequestMethod.GET)을 사용해도 동일
  • GET 방식을 “/” 요청이 들어왔을 때 실행될 메소드

model.addAttribute(String name, Object value);

  • View의 속성명에 맞는 data가 전달 됨
  • model 객체에 data 담기

@Enumerated(EnumType.STRING)이 어노테이션을 붙이지 않으면 정수가 저장된다. (0, 1, 2 ... )

  • Enum 값을 String으로 저장하고 싶을 때 사용

@Log4j2

  • 로그 사용

Lombok 관련

@Getter

  • Getter 메소드 생성

@Setter

  • Setter 메소드 생성

@Builder

  • builder() : 빌더 클래스의 인스턴스 생성
  • build() : 실제 생성자 호출하여 객체 생성
  • 빌더 패턴을 자동으로 생성해준다.

@NoArgsConstructor(access = AccessLevel.PROTECTED)

  • 파라미터가 없는 기본 생성자 생성
  • 생성자를 통해서 값 변경 목적으로 접근하는 메시지들 차단
  • @Entity 적용시 기본생성자는 필수이기 때문에 롬복에서 제공하는 이 어노테이션을 사용한다.

@AllArgsConstructor

  • @Builder와 @NoArgsConstructor를 함께 사용시 모든 매개 변수를 받는 생성자가 없으면 에러가 발생한다.
  • 모든 필드 값을 파라미터로 받는 생성자 생성

@ToString

  • 가능하면 안적는게 좋음
  • 내용을 보기 위해 사용

@Date

  • 롬복에서 제공하는 어노테이션
  • @Getter, @Setter, @ToString 모두 포함


REST 관련

@RestController

  • Controller가 REST 방식을 처리하기 위한 것

@RequestMapping

  • REST API 호출 시 작성된 URL의 method 값에 따라 맵핑 시켜준다.

@ResponseBody

  • JSP 같은 View로 전달되는 것이 아니라 데이터 자체를 전달

@RequestBody

  • HTTP 요청의 body를 자바 객체로 변환 시켜준다.

@PathVariable

  • 주소의 일부분을 변수로 사용하고 싶을 때 사용하는 어노테이션
  • 사용 시 null이나 공백이 들어가면 안됨
  • 컨트롤러에서 url 입력할때 { 변수명 } 으로 작성하고
    @GetMapping("/{id}")
    
  • 메소드 정의할 때 @PathVariable("변수명")
    public String test(@PathVariable Long id){

@RequestParam

  • HTTP를 통하여 받아온 데이터를 단일 파라미터로 변환해준다.

Entity

@Lob

  • 255개 이상의 문자를 저장하고 싶을 때 지정
  • Large Object

@Entity

  • 기본적으로 클래스 이름과 동일한 테이블과 매핑된다.
  • 엔티티와 테이블명을 다르게 하고 싶을 땐 @Table 사용
  • JPA를 사용해서 테이블과 매핑할 클래스에 필수로 붙여야 한다.

@Table

  • 테이블 이름은 원래 클래스 이름으로 저장되는데, @Table(name=”이름”)을 사용하면 원하는 테이블 이름으로 저장 가능

@Id

  • 엔티티의 필수 어노테이션으로서 @Id가 없는 엔티티는 사용할 수 없다.
  • 테이블의 키본키를 매핑한다

@DynamicUpdate

  • 실제 값이 변경된 컬럼으로만 update 쿼리를 만들어주는 어노테이션

@GeneratedValue(Strategy = GenerationType.AUTO)

  • id 값을 따로 할당하지 않아도 데이터베이스가 자동으로 AUTO_INCREMENT를 하여 기본키를 생성해줌
  • 기본키 생성을 데이터베이스에게 위임하는 방식

@Column

  • 필드와 컬럼을 매핑할 때 사용한다.

@JoinColumn

  • 외래키를 매핑할 때 사용한다.

테스트 관련

@Test

  • @SpringBootTest와 함께 사용
  • Unit Test를 위해 사용

@DisplayName

  • ex) @DisplayName(”상품명 조회 테스트”)
  • 테스트 이름 지정

@SpringBootTest

  • 테스트 케이스가 실행될 때 테스트에 필요한 모든 설정과 빈들을 자동으로 초기화 하는 역할

@Transactional

  • Transactional을 붙이면 테스트는 가능하나 DB에 저장이 되지 않는다.

서비스

@Service

  • 서비스 레이어 클래스인 것을 명시

@Transactional

  • 해당 범위의 메서드가 트랜잭션이 되도록한다

@RequiredArgsContructor

  • 클래스의 의존성 관계가 변경될 때마다 생성자 코드를 수정할 필요가 없다.
  • @Service @Transactional @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; }
  • final이 선언된 모든 필드를 인자값으로 하는 생성자를 생성해준다.

빈 관련

@Bean

  • 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용

@Component

  • 개발자가 직접 컨트롤이 가능한 Class들의 경우 사용

@Configuration

  • 설정 파일로 사용 시

@EnableJpaAuditing

  • 감시 기능
저작자표시 비영리 변경금지 (새창열림)

'Web & Android > SpringBoot' 카테고리의 다른 글

[SpringBoot] 한글 변환(\u~)  (0) 2023.10.14
[SpringBoot] 에러 처리  (0) 2023.10.14
[SpringBoot] 페이징 처리  (0) 2023.10.14
[SpringBoot] ResponseEntity  (0) 2023.10.14
[SpringBoot] Entity  (0) 2023.10.14
  1. 빈 관련
'Web & Android/SpringBoot' 카테고리의 다른 글
  • [SpringBoot] 한글 변환(\u~)
  • [SpringBoot] 에러 처리
  • [SpringBoot] 페이징 처리
  • [SpringBoot] ResponseEntity
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (827)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (443)
        • 백준[JAVA] (106)
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    baekjoon
    python
    pcce 기출문제
    데이터
    DB
    backjoon
    리눅스마스터 1급
    스프링
    postgresql
    시큐리티
    플러터
    스프링 부트 쇼핑몰 프로젝트 with JPA
    Spring Security
    Oracle
    리눅스
    JPA
    CS지식
    프로그래머스
    스프링부트
    Linux
    Java
    Flutter
    백준
    자바
    springboot
    데이터베이스
    리눅스마스터
    programmers
    CS
    spring
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[SpringBoot] @Annotation

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.