1. 구성 관련 어노테이션
@Configuration
- 스프링 컨테이너에 빈(Bean) 설정을 정의하는 클래스임을 나타냄.
- XML 기반 설정을 대체.
- @Bean과 함께 사용해 빈을 등록.
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
@Bean
- 메서드 레벨에서 사용하며, 반환값을 스프링 컨테이너에 빈으로 등록.
- 주로 @Configuration과 함께 사용.
@Bean
public DataSource dataSource() {
return new HikariDataSource();
}
@ComponentScan
- 특정 패키지를 스캔하여 @Component, @Service, @Repository, @Controller로 선언된 클래스를 자동으로 빈으로 등록.
- basePackages 속성으로 탐색 범위 설정 가능.
@Configuration
@ComponentScan(basePackages = "com.example.myapp")
public class AppConfig {
}
@Import
- 다른 @Configuration 클래스를 가져와서 설정을 병합.
- 모듈화된 설정을 나누고 결합할 때 사용.
@Configuration
@Import(AppConfig.class)
public class MainConfig {
}
2. 컴포넌트 관련 어노테이션
@Component
- 스프링이 관리하는 일반 빈으로 등록.
- 계층에 상관없이 모든 클래스에 사용 가능.
@Service
- 비즈니스 로직을 처리하는 서비스 계층 클래스에 사용.
- @Component와 동일한 역할을 하지만 의미를 명확히 하기 위해 사용.
@Repository
- 데이터 접근 계층(DAO)에 사용.
- 데이터베이스 예외를 Spring 예외로 변환하는 추가 기능을 제공.
@Controller
- 프레젠테이션 계층의 컨트롤러 클래스에 사용.
- 요청을 처리하고 View를 반환.
@RestController
- @Controller와 @ResponseBody를 결합한 어노테이션.
- JSON/XML 형식의 데이터를 반환하는 RESTful 컨트롤러에 사용.
3. 의존성 주입 관련 어노테이션
@Autowired
- 스프링 컨테이너에서 의존성을 자동으로 주입.
- 생성자, 필드, 메서드에서 사용 가능.
- 기본적으로 타입 기반 주입.
@Qualifier
- 같은 타입의 여러 빈이 있을 때 특정 빈을 선택하도록 지정.
@Required
- 필수로 설정해야 하는 속성을 표시.
- 스프링 5.1 이후부터는 더 이상 사용하지 않음.
@Value
- 프로퍼티 값을 주입.
- application.properties나 application.yml의 값을 읽어올 때 사용.
4. 요청 매핑 관련 어노테이션
@RequestMapping
- HTTP 요청 URL을 특정 메서드 또는 클래스와 매핑.
- 클래스와 메서드 레벨에서 사용 가능.
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping
- HTTP 메서드(GET, POST, PUT, DELETE)에 특화된 요청 매핑.
@PathVariable
- URL 경로 변수 값을 가져올 때 사용.
@RequestParam
- URL 쿼리 파라미터 값을 가져올 때 사용.
@RequestBody
- HTTP 요청 본문(body)을 매핑하여 객체로 변환.
@ResponseBody
- 메서드가 반환하는 데이터를 View가 아닌 HTTP 응답 본문으로 직렬화.
- @RestController에 포함되어 있음.
5. 트랜잭션 관리 관련 어노테이션
@Transactional
- 메서드나 클래스 단위로 트랜잭션을 관리.
- 데이터 일관성을 보장하기 위해 사용
6. 유효성 검사 관련 어노테이션
@Valid
- Bean Validation API를 사용하여 요청 데이터를 검증.
- @NotNull, @Size 등과 함께 사용.
이 외 Spring Security, Spring Boot Actuator, Spring Cloud 등에서 제공하는 어노테이션