[Spring] 스프링부트의 핵심, @Annotation 기초 정복!
왜 @Annotation이 중요한가?
스프링부트를 배우다 보면 코드 곳곳에서 등장하는 @ 기호를 자주 마주하게 됩니다.
바로 어노테이션(Annotation)입니다.
처음에는 단순한 기호처럼 보이지만, 사실 이 어노테이션은 스프링부트의 강력한 기능을 이끄는 핵심 요소입니다.
이 글에서는 스프링부트 개발에서 필수적으로 알아야 할 주요 어노테이션과 그 역할을 간결하게 설명하겠습니다.
✅ @SpringBootApplication: 스프링부트의 시작점
`@SpringBootApplication`은 스프링부트 애플리케이션의 진입점을 정의하는 어노테이션입니다.
이 어노테이션 하나가 `@Configuration`, `@EnableAutoConfiguration`,`@ComponentScan` 세 가지 기능을 포함하고 있어
초기 설정을 간소화합니다.
핵심 포인트: 이 어노테이션이 붙은 클래스가 프로젝트의 시작점이 됩니다.
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
✅ @RestController: API 개발의 기본
`@RestController`는 웹 애플리케이션에서 RESTful API를 개발할 때 사용하는 어노테이션입니다.
내부적으로 `@Controller`와 `@ResponseBody`를 결합한 형태로, JSON 형식의 데이터를 반환합니다.
핵심 포인트: 클라이언트 요청에 대한 JSON 응답을 간단하게 처리할 수 있습니다.
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}
✅ @Autowired: 의존성 주입(DI)의 핵심
스프링의 핵심 개념인 의존성 주입(Dependency Injection)을 구현하는 데 사용하는 어노테이션입니다.
`@Autowired`를 통해 필요한 객체를 자동으로 주입받을 수 있습니다.
핵심 포인트: 개발자가 객체 생성 로직을 신경 쓸 필요 없이, 스프링이 자동으로 관리합니다.
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
✅ @RequestMapping 및 하위 매핑 어노테이션: 요청 처리의 유연성
HTTP 요청을 처리할 때 사용하는 어노테이션입니다.
`@RequestMapping`은 모든 HTTP 요청(GET, POST, PUT, DELETE 등)을 처리할 수 있으며,
이 외에도 특정 메서드에 특화된 매핑 어노테이션들이 존재합니다.
핵심 포인트: HTTP 메서드에 따라 직관적으로 요청을 처리할 수 있으며, 유지보수가 용이한 코드 작성이 가능합니다.
@PostMapping | POST 요청 처리 | 생성 (CREATE) |
@GetMapping | GET 요청 처리 | 조회 (READ) |
@PutMapping | PUT 요청 처리 | 전체 수정 (UPDATE) |
@PatchMapping | PATCH 요청 처리 | 부분 수정 (UPDATE) |
@DeleteMapping | DELETE 요청 처리 | 삭제 (DELETE) |
@RestController
@RequestMapping("/api")
public class UserController {
@PostMapping("/users")
public User createUser(@RequestBody User user) {
return userService.save(user);
}
@GetMapping("/users")
public List<User> getUsers() {
return userService.findAll();
}
@PutMapping("/users/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User user) {
return userService.update(id, user);
}
@PatchMapping("/users/{id}")
public User partiallyUpdateUser(@PathVariable Long id, @RequestBody Map<String, Object> updates) {
return userService.partialUpdate(id, updates);
}
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable Long id) {
userService.delete(id);
}
}
어노테이션, 스프링의 강력한 도구
스프링부트의 어노테이션은 단순한 코드 장식이 아닌, 코드의 가독성을 높이고 개발 생산성을 극대화하는 도구입니다.
`@SpringBootApplication`, `@RestController`, `@Autowired`, `@RequestMapping` 및 하위 매핑 어노테이션의 역할을 정확히 이해하면 스프링부트 개발이 훨씬 더 수월해질 것입니다.