[Spring] 어노테이션 (Annotation)

이광훈·2023년 6월 21일
0

✅ Data_Annotation

👉 Class의 모든 Field에 대한 Getter 및 Setter 메소드, toString(), equals(), hashCode() 메소드를 생성해주는 역할

1. @Data

  • @toString
    » Class의 toString() 메소드를 생성
  • @EqualsAndHashCode
    » Class에 대한 equals() 및 hashCode() 메소드를 생성
  • @Getter & @Setter
    » Class에 모든 Field에 대한 Getter와 Setter 메소드를 생성
  • @NoArgsConstructor
    » Class에 대한 인자가 없는 생성자를 생성
  • @RequiredArgsConstructor
    » Class의 각 final field와 null이 아닌 field에 대해 하나의 매개변수가 있는 생성자를 생성
  • @AllArgsConstructor
    » Class의 각 Field에 대해 하나의 매개변수가 있는 생성자를 생성

2. @Builder

👉 Class에 대한 빌더 패턴을 생성

  • @NoArgsConstructor
    » Class에 대한 인자가 없는 생성자를 생성
  • @RequiredArgsConstructro
    » Class의 각 final field와 null이 아닌 field에 대해 하나의 매개변수가 있는 생성자를 생성

3. @Value

👉 설정파일(.properties, .yml)에 설정한 내용을 주입 시켜줌

✅ Log_Annotation

🔸 프로그램에서 로그를 작성해두면, 어떤 동작을 하고 있는지, 어느 부분에서 에러가 났는지 쉽게 파악할 수 있음
🔸 특히 오류가 발생하면 어떤 함수 호출에서 문제가 있었는지, 에러 메세지가 무엇인지, 어떤 값이 들어갔는지 등을 알 수 있어 훨씬 더 빠르게 파악 가능
🔸 내장 java 로깅 framework를 사용하여 class에 대한 로거 인스턴스를 생성

1. Slf4j (Simple Loggin Facade for Java)

👉 로깅 추상화 라이브러리 - 로깅하는 일을 직접하지 않고 로깅 구현체를 찾아서 실제 로깅 라이브러리를 찾아서 사용할 수 있게 함

🔹 모듈

  • API
    • 인터페이스로서 사용하기 위해선 바인딩 작업이 필요 (혼자서 사용 불가)
  • Binding
    • API 구현체와 이어주는 어댑터 역할, 여러 바인딩 중 반드시 하나만 사용해야함
  • Bridge
    • 레거시를 위해 필요한 모듈

🔹 로그레벨

  • FATAL
    • 매우 심각한 에러가 났을 때
  • ERROR
    • 의도하지 않은 에러가 발생했을 때
  • WARN
    • 에러는 아니지만 잠재적 가능성이 있는 경우
  • INFO
    • 요구사항에 따라 시스템 동작을 보여줄 때
  • DEBUG
    • INFO레벨보다 상세히 나타낼 때

2. Log4j

👉 Log4j 로깅 framework를 사용하여 class에 대한 로거 인스턴스를 생성해줌

🔹 컴포넌트

  • Logger
    • 프로그램으로부터 로깅정보를 받아옴 → 데이터를 기록하는 역할
  • Appender
    • 로깅정보를 여러가지 장치로 내보내줌 → 어디에 기록할 것인가(file, console, jdbc 등)
  • Layout
    • 로깅 정보를 포맷팅함 → 어떤 스타일로 기록할지를 정하는 역할

✅ Repository_Annotation

🔸 Entity에 의해 생성된 DB에 접근하는 메소드들을 사용하기 위한 인터페이스
🔸 받은 정보를 DB에 저장하고 조회

✅ Mapper_Annotation

🔸 일일이 DAO를 만들지 않고 Interface만을 이용해 더 편하게 개발 가능
🔸 자바코드와 SQL문(.xml)을 분리하여 편리하게 관리 가능
🔸 XML 파일과 Mapper Interface의 패키지 위치와 파일명이 동일해야함
🔸 MyBatis에서 인식할 수 있도록 도와줌

  • @Insert
    » xml 파일 id에게 insert 명령문을 이용하겠다고 명시
    » xml 파일에서는 인터페이스에서 설정한 insert method 이름을 지정해서 사용 가능
  • @Update
    » xml 파일 id에게 update 명령문을 이용하겠다고 명시
    » xml 파일에서는 인터페이스에서 설정한 update method 이름을 지정해서 사용 가능
  • @Select
    » xml 파일 id에게 select 명령문을 이용하겠다고 명시
  • @Delete
    » xml 파일 id에게 Delete 명령문을 이용하겠다고 명시
profile
웃으며 일할 때, 시너지가 배가 된다고 믿는 개발자

0개의 댓글