Spring Boot 주요 어노테이션

    

 ### **📌 Spring Boot에서 꼭 알아야 할 주요 어노테이션 정리!** 🚀


Spring에는 **많은 어노테이션이 있지만, 기본적으로 자주 쓰이는 것들만 먼저 익히면 돼.**\

💡 **기본적으로 알아야 할 어노테이션은 크게 5가지 카테고리로 정리할 수 있어.**


* * * * *


**📌 1️⃣ Spring 핵심 어노테이션 (빈 & 의존성 주입)**

---------------------------------------


| 어노테이션 | 역할 |

| --- | --- |

| `@Component` | **Spring 빈(객체)으로 등록** |

| `@Service` | **비즈니스 로직을 담당하는 서비스 레이어 등록** (`@Component`와 같은 역할) |

| `@Repository` | **데이터베이스와 연결되는 레이어 등록** (예: JPA Repository) |

| `@Controller` | **Spring MVC 컨트롤러 등록** (사용자 요청 처리) |

| `@RestController` | `@Controller + @ResponseBody` (JSON 응답을 반환하는 컨트롤러) |

| `@Autowired` | **Spring이 자동으로 의존성 주입** |


📌 **예제**


```

@Component

public class MyComponent {

    public void hello() {

        System.out.println("Hello from MyComponent!");

    }

}


```


```

@Service

public class MyService {

    private final MyComponent myComponent;


    @Autowired  // ✅ 의존성 주입

    public MyService(MyComponent myComponent) {

        this.myComponent = myComponent;

    }


    public void doSomething() {

        myComponent.hello();

    }

}


```


* * * * *


**📌 2️⃣ Spring Boot API 관련 어노테이션**

-----------------------------------


| 어노테이션 | 역할 |

| --- | --- |

| `@GetMapping` | **GET 요청을 처리하는 API 엔드포인트** |

| `@PostMapping` | **POST 요청을 처리하는 API 엔드포인트** |

| `@PutMapping` | **PUT 요청을 처리하는 API 엔드포인트** |

| `@DeleteMapping` | **DELETE 요청을 처리하는 API 엔드포인트** |

| `@RequestParam` | **URL의 쿼리 파라미터 값 받기** |

| `@PathVariable` | **URL 경로 변수 값 받기** |

| `@RequestBody` | **JSON 요청 데이터를 객체로 변환** |

| `@ResponseBody` | **객체를 JSON 응답으로 반환** |


📌 **예제**


```

@RestController

@RequestMapping("/api")

public class MyController {


    @GetMapping("/hello")

    public String hello() {

        return "Hello, Spring!";

    }


    @GetMapping("/users/{id}")

    public String getUser(@PathVariable Long id) {

        return "User ID: " + id;

    }


    @PostMapping("/users")

    public String createUser(@RequestBody UserDto userDto) {

        return "User created: " + userDto.getUsername();

    }

}


```


* * * * *


**📌 3️⃣ Spring Boot 설정 & 실행 관련 어노테이션**

---------------------------------------


| 어노테이션 | 역할 |

| --- | --- |

| `@SpringBootApplication` | **Spring Boot 애플리케이션을 실행하는 메인 클래스에 사용** |

| `@ComponentScan` | **`@Component`가 붙은 클래스를 자동으로 찾아서 빈으로 등록** |

| `@Configuration` | **설정 파일 클래스 지정** |

| `@Bean` | **Spring 빈을 직접 등록할 때 사용** |


📌 **예제**


```

@SpringBootApplication

public class DemoApplication {

    public static void main(String[] args) {

        SpringApplication.run(DemoApplication.class, args);

    }

}


```


```

@Configuration

public class AppConfig {

    @Bean

    public MyComponent myComponent() {

        return new MyComponent();

    }

}


```


* * * * *


**📌 4️⃣ Spring Boot 데이터 처리 (JPA & 트랜잭션)**

------------------------------------------


| 어노테이션 | 역할 |

| --- | --- |

| `@Entity` | **JPA에서 데이터베이스 테이블과 매핑되는 클래스** |

| `@Id` | **JPA 엔티티의 기본 키(Primary Key) 지정** |

| `@GeneratedValue` | **자동으로 ID 값을 증가시키는 설정 (AUTO_INCREMENT)** |

| `@Column` | **테이블의 컬럼을 지정 (옵션 설정 가능)** |

| `@Repository` | **데이터베이스와 연결되는 DAO 레이어** |

| `@Transactional` | **트랜잭션을 적용할 때 사용** |


📌 **예제**


```

@Entity

public class User {

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private Long id;


    @Column(nullable = false)

    private String username;

}


```


```

@Repository

public interface UserRepository extends JpaRepository<User, Long> {

}


```


```

@Service

public class UserService {

    private final UserRepository userRepository;


    @Autowired

    public UserService(UserRepository userRepository) {

        this.userRepository = userRepository;

    }


    @Transactional

    public void createUser(String username) {

        User user = new User();

        user.setUsername(username);

        userRepository.save(user);

    }

}


```


* * * * *


**📌 5️⃣ Lombok 어노테이션 (코드 자동 생성)**

----------------------------------


| 어노테이션 | 역할 |

| --- | --- |

| `@Getter` | **모든 필드의 Getter 메서드 자동 생성** |

| `@Setter` | **모든 필드의 Setter 메서드 자동 생성** |

| `@ToString` | **객체 정보를 출력하는 `toString()` 자동 생성** |

| `@EqualsAndHashCode` | **`equals()` 및 `hashCode()` 자동 생성** |

| `@NoArgsConstructor` | **기본 생성자 자동 생성** |

| `@AllArgsConstructor` | **모든 필드를 받는 생성자 자동 생성** |

| `@Data` | **`@Getter`, `@Setter`, `@ToString`, `@EqualsAndHashCode` 포함** |

| `@Builder` | **빌더 패턴으로 객체 생성 가능 (`Class.builder().field(value).build()`)** |


📌 **예제**


```

import lombok.*;


@Getter

@Setter

@NoArgsConstructor

@AllArgsConstructor

@ToString

public class UserDto {

    private Long id;

    private String username;

}


```


```

UserDto user = new UserDto(1L, "john_doe");

System.out.println(user);  // UserDto(id=1, username=john_doe)


```


* * * * *


**📌 6️⃣ 정리 (어노테이션 한눈에 보기!)**

-----------------------------


| 카테고리 | 어노테이션 |

| --- | --- |

| **Spring 핵심 (빈 & DI)** | `@Component`, `@Service`, `@Repository`, `@Controller`, `@RestController`, `@Autowired` |

| **Spring API (요청/응답 처리)** | `@GetMapping`, `@PostMapping`, `@PutMapping`, `@DeleteMapping`, `@RequestParam`, `@PathVariable`, `@RequestBody` |

| **Spring Boot 설정** | `@SpringBootApplication`, `@Configuration`, `@Bean`, `@ComponentScan` |

| **JPA (데이터베이스 연동)** | `@Entity`, `@Id`, `@GeneratedValue`, `@Column`, `@Repository`, `@Transactional` |

| **Lombok (코드 자동 생성)** | `@Getter`, `@Setter`, `@NoArgsConstructor`, `@AllArgsConstructor`, `@ToString`, `@Data`, `@Builder` |


* * * * *


**📌 7️⃣ 결론: Spring에서 꼭 알아야 할 필수 어노테이션**

----------------------------------------


✔ **Spring Boot 개발에서 `@RestController`, `@Service`, `@Repository`, `@Autowired`는 필수!**\

✔ **Spring API 개발에서는 `@GetMapping`, `@PostMapping`, `@RequestBody`, `@PathVariable`을 자주 사용!**\

✔ **JPA(Entity)에서는 `@Entity`, `@Id`, `@GeneratedValue`가 필수!**\

✔ **Lombok을 활용하면 `@Getter`, `@Setter`, `@Data`를 사용해서 코드 길이를 줄일 수 있음!**



댓글

이 블로그의 인기 게시물

js 스트링에서 요소 갯수 세기

STUDY

javascript cheatsheet