왜 @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
및 하위 매핑 어노테이션의 역할을 정확히 이해하면 스프링부트 개발이 훨씬 더 수월해질 것입니다.