Java, Spring Framework, JPA 그리고 Lombok 라이브러리, 이들을 정리해봅시다!
@Override: 이 어노테이션은 메소드가 부모 클래스의 메소드를 오버라이드한다는 것을 나타냅니다.
@Deprecated: 이 어노테이션은 더 이상 사용되지 않으며 가능하면 사용을 피해야 한다는 것을 나타냅니다.
@SuppressWarnings: 이 어노테이션은 컴파일러 경고를 숨기는 데 사용됩니다.
@SafeVarargs: 이 어노테이션은 Java 7 이상에서 제네릭 형식의 가변 인자에 대한 경고를 무시하도록 지시하는 데 사용됩니다.
@Autowired: 이 어노테이션은 스프링이 의존성 주입을 처리하도록 지시하는 데 사용됩니다.
@Component: 이 어노테이션은 스프링이 클래스를 Bean으로 관리하도록 지시하는 데 사용됩니다.
@Service, @Repository, @Controller: 이들 어노테이션은 각각 서비스, 레포지토리, 컨트롤러 계층의 클래스를 나타내며, @Component의 특수한 형태
입니다.
@RequestMapping: 이 어노테이션은 특정 URL에 대한 HTTP 요청을 처리하는 메소드를 지정하는 데 사용됩니다.
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping: 이들 어노테이션은 각각 GET, POST, PUT, DELETE 요청을 처리하는 메소드를 지정하는 데 사용되며, @RequestMapping의 특수한 형태입니다.
@RestController: 이 어노테이션이 붙은 클래스는 웹 요청을 처리하는 역할을 하며, 메소드의 반환값은 HTTP 응답 본문에 직접 쓰여집니다. 이 어노테이션을 사용하면 JSON이나 XML 같은 형태로 객체를 반환하면, Spring에서는 이를 HTTP 응답 본문에 적절한 형태로 변환하여 전송합니다.
@ResponseBody: 이 어노테이션은 컨트롤러의 메소드가 반환하는 객체를 HTTP 응답 본문에 쓰도록 지시합니다.
@Entity: 이 어노테이션은 클래스가 JPA 엔티티임을 나타냅니다.
@Table: 이 어노테이션은 엔티티가 매핑될 테이블을 지정합니다.
@Id: 이 어노테이션은 엔티티의 기본 키 필드를 나타냅니다.
@GeneratedValue: 이 어노테이션은 기본 키의 생성 전략을 지정합니다.
@Column: 이 어노테이션은 필드가 매핑될 컬럼을 지정합니다.
@ManyToOne, @OneToMany, @OneToOne, @ManyToMany: 이들 어노테이션은 엔티티 간의 관계를 나타냅니다.
@Getter / @Setter: 이 어노테이션을 사용하면 클래스 또는 필드에 getter/setter 메소드를 자동으로 생성할 수 있습니다.
@ToString: 이 어노테이션을 사용하면 클래스의 toString 메소드를 자동으로 생성할 수 있습니다.
@EqualsAndHashCode: 이 어노테이션을 사용하면 클래스의 equals 메소드와 hashCode 메소드를 자동으로 생성할 수 있습니다.
@NoArgsConstructor / @AllArgsConstructor / @RequiredArgsConstructor: 이들 어노테이션을 사용하면 각각 파라미터가 없는 생성자, 모든 필드를 파라미터로 갖는 생성자, 필수 필드만 파라미터로 갖는 생성자를 자동으로 생성할 수 있습니다.
@Data: 이 어노테이션은 @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor을 한 번에 적용하여 모든 보일러플레이트 코드를 자동으로 생성합니다.
@Builder: 이 어노테이션을 사용하면 빌더 패턴을 적용한 클래스를 자동으로 생성할 수 있습니다. 빌더 패턴은 많은 파라미터를 갖는 객체를 생성할 때 가독성을 높이기 위해 사용되는 디자인 패턴입니다.
@SneakyThrows: 이 어노테이션을 사용하면 검사 예외를 무시하고 런타임 예외로 변환할 수 있습니다.
@Value: 이 어노테이션은 불변 객체를 생성하기 위해 사용됩니다. 모든 필드는 private과 final로 설정되며, getter 메소드만 생성됩니다.
@Log / @Slf4j / @Log4j: 이 어노테이션은 각각 JDK 로그, SLF4J, Log4j 로그를 자동으로 생성할 수 있습니다.
@Value: 이 어노테이션은 기본값 또는 표현식의 결과로 초기화된 속성 값을 삽입하거나, 프로퍼티 파일에 있는 값을 주입하는 데 사용됩니다.
@RequestParam: 이 어노테이션은 HTTP 요청 파라미터를 컨트롤러 메소드의 인자로 바인딩하는 데 사용됩니다.
@PathVariable: 이 어노테이션은 URL의 경로 변수를 메소드 인자로 바인딩하는 데 사용됩니다.
이 모든 어노테이션들이 제공하는 기능을 이해하고 활용하면 Java 기반의 웹 애플리케이션 개발이 훨씬 편리해집니다. 잘 활용하면 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.