어노테이션은 적용하는 위치의 하위 계층까지 모두 적용된다. 예를 들어 클래스라면 클래스, 내부의 특정 변수라면 특정변수.
@Controller
- @Controller 어노테이션은 Spring Framework에서 컨트롤러 클래스를 정의할 때 사용됩니다.
- 컨트롤러 클래스는 웹 애플리케이션의 요청을 처리하고 응답을 생성하는 역할을 합니다.
- 이 어노테이션을 클래스에 부여하면 Spring Framework는 해당 클래스를 컨트롤러로 인식하고 관리합니다.
- 컨트롤러는 웹 요청을 처리하는 메서드를 포함하며, 이러한 메서드는 주로 @GetMapping, @PostMapping, @RequestMapping 등의 어노테이션과 함께 사용됩니다.
@GetMapping
- @GetMapping 어노테이션은 Spring Framework에서 HTTP GET 요청을 처리하는 메서드를 정의할 때 사용됩니다.
- 메서드에 이 어노테이션을 부여하면 해당 메서드는 지정한 URL 경로로 들어오는 GET 요청을 처리합니다.
- 예를 들어, @GetMapping("/example")은 "/example" 경로로 들어오는 GET 요청을 처리하는 메서드를 정의합니다.
- @RequestMapping과 유사하게 다양한 속성을 설정할 수 있으며, 주로 요청 경로를 지정하는 데 사용됩니다.
@RequiredArgsConstructor
- Spring Framework와 같은 프레임워크에서 종종 의존성 주입(Dependency Injection)을 위해 생성자를 필요로 합니다.
- @RequiredArgsConstructor 어노테이션을 클래스에 부여하면 Lombok은 해당 클래스의 final 필드를 가지고 생성자를 자동으로 생성합니다.
- 생성자는 해당 클래스 내의 모든 final 필드를 매개변수로 받습니다.
@Transactional
@Transactional 어노테이션은 스프링 프레임워크에서 제공되는 어노테이션 중 하나로, 데이터베이스 트랜잭션을 관리하는 데 사용됩니다. 이 어노테이션을 메서드 레벨에 적용하면 해당 메서드 내에서 실행되는 작업들을 하나의 트랜잭션 단위로 묶어줍니다. 트랜잭션은 데이터베이스 작업에서 중요한 개념으로, 일련의 작업이 모두 성공해야 하거나 실패해야 하는 경우에 사용됩니다.
@Transactional 어노테이션의 주요 특징과 동작은 다음과 같습니다:
-
트랜잭션 관리: @Transactional 어노테이션을 메서드 레벨에 적용하면 해당 메서드 내에서 실행되는 데이터베이스 작업이 하나의 트랜잭션으로 관리됩니다.
-
트랜잭션 속성 설정: @Transactional 어노테이션을 사용하면 트랜잭션의 속성을 설정할 수 있습니다. 예를 들어, 언제 롤백할 것인지, 어떻게 커밋할 것인지, 격리 수준을 설정할 수 있습니다.
-
선언적 트랜잭션 관리: @Transactional 어노테이션을 사용하면 개발자가 명시적으로 트랜잭션을 시작, 커밋 또는 롤백할 필요가 없습니다. 스프링은 이러한 관리를 자동으로 수행합니다.
-
예외 처리: @Transactional 어노테이션은 예외가 발생할 경우 롤백을 처리하는 방법을 지정할 수 있습니다. 기본적으로 런타임 예외가 발생하면 트랜잭션은 롤백됩니다.
-
다양한 옵션: @Transactional 어노테이션은 다양한 옵션과 속성을 제공하여 트랜잭션 동작을 세밀하게 제어할 수 있습니다.