Back-End

[Spring] 어노테이션 정리

Minch13r 2025. 4. 20. 21:43

1. 핵심 어노테이션

@SpringBootApplication

Spring Boot 애플리케이션의 시작점을 나타내는 어노테이션. 다음 세 가지 어노테이션을 포함:

  • @Configuration: 해당 클래스가 Bean 설정을 포함함을 표시.
  • @EnableAutoConfiguration: Spring Boot의 자동 설정 기능을 활성화.
  • @ComponentScan: 컴포넌트 스캔을 활성화하여 @Component, @Service 등이 붙은 클래스를 찾아 Bean으로 등록.
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

2. 스테레오타입 어노테이션

@Component

일반적인 Spring 컴포넌트를 나타내는 기본 어노테이션. 자동 스캔 대상으로 등록.

@Service

비즈니스 로직을 처리하는 서비스 계층의 컴포넌트를 표시. @Component의 특수화된 형태.

@Repository

데이터 접근 계층(DAO)의 컴포넌트를 표시. 데이터베이스 예외를 Spring의 DataAccessException으로 변환하는 기능 제공.

@Controller

Spring MVC의 컨트롤러를 표시. 주로 View를 반환하는 컨트롤러에 사용.

@RestController

@Controller와 @ResponseBody를 합친 어노테이션. REST API를 위한 컨트롤러를 표시하며, 메서드 반환값을 HTTP 응답 본문으로 직접 전송.

3. 웹 관련 어노테이션

@RequestMapping

요청 URL을 메서드나 클래스에 매핑. HTTP 메서드, 경로, 파라미터 등 다양한 조건으로 매핑 가능.

@RequestMapping(value = "/users", method = RequestMethod.GET)

HTTP 메서드별 어노테이션

  • @GetMapping: GET 요청 처리.
  • @PostMapping: POST 요청 처리.
  • @PutMapping: PUT 요청 처리.
  • @DeleteMapping: DELETE 요청 처리.
  • @PatchMapping: PATCH 요청 처리.

@RequestParam

URL 쿼리 파라미터나 폼 데이터를 메서드 파라미터에 바인딩.

@GetMapping("/users")
public List<User> getUsers(@RequestParam(required = false) String name) {
    // 구현 코드
}

@PathVariable

URL 경로 변수를 메서드 파라미터에 바인딩.

@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
    // 구현 코드
}

@RequestBody

HTTP 요청 본문을 자바 객체로 변환하여 메서드 파라미터에 바인딩.

@PostMapping("/users")
public User createUser(@RequestBody User user) {
    // 구현 코드
}

4. 데이터 접근 관련 어노테이션

@Entity

JPA 엔티티 클래스를 표시. 데이터베이스 테이블과 매핑.

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    // 필드와 메서드
}

@Table

엔티티 클래스와 매핑할 데이터베이스 테이블 정보를 지정.

@Entity
@Table(name = "users")
public class User {
    // 필드와 메서드
}

@Id

엔티티의 기본 키(Primary Key) 필드를 표시.

@GeneratedValue

기본 키 생성 전략을 지정.

@Column

엔티티 필드와 매핑할 테이블 컬럼 정보를 지정.

@Column(name = "user_name", nullable = false, length = 100)
private String name;

@Transactional

트랜잭션 범위와 동작을 지정. 메서드나 클래스에 적용 가능.

@Transactional(readOnly = true)
public User getUser(Long id) {
    // 구현 코드
}

5. 의존성 주입 관련 어노테이션

@Autowired

의존성을 자동으로 주입. 생성자, 필드, 메서드에 적용 가능.

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    // 메서드
}

@Qualifier

같은 타입의 빈이 여러 개 있을 때 특정 빈을 지정.

@Autowired
@Qualifier("primaryDataSource")
private DataSource dataSource;

6. 설정 관련 어노테이션

@Configuration

Java 기반 설정 클래스를 표시.

@Configuration
public class AppConfig {
    // Bean 정의 메서드
}

@Bean

메서드가 Spring 컨테이너에서 관리할 Bean을 생성함을 표시.

@Bean
public DataSource dataSource() {
    // 데이터소스 설정 및 반환
}

@ConfigurationProperties

외부 설정 프로퍼티를 자바 객체에 바인딩.

@ConfigurationProperties(prefix = "app.mail")
public class MailProperties {
    private String host;
    private int port;
    // getter와 setter
}

 

'Back-End' 카테고리의 다른 글

[Spring] 빈 생명주기  (1) 2025.04.22
[Spring] 내용 정리  (1) 2025.04.21
[Spring] 기초 공부1  (1) 2025.04.19
[Spring] 기초 공부  (1) 2025.04.15
JDBC와 JPA  (1) 2025.04.07