Framework/SpringBoot

[Spring] 스프링부트의 핵심, @Annotation 기초 정복!

leonie. 2025. 2. 3. 14:10

 

 

 

 

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

 

 

 

 

 

728x90