WEB/Spring

[Spring]기본적인 어노테이션(Annotation)을 알아보자

MoonSta 2023. 7. 21. 23:51

Spring의 어노테이션의 사용으로 인해 기존의 XML 기반의 설정보다 간편하고 개발자가 더 쉽고 직관적으로 Spring 프레임워크의 기능을 활용할 수 있습니다. 이번 포스팅에서는 Spring으로 개발을 하면서 자주 사용되는 어노테이션의 종류를 알아보고 각각의 어노테이션에 대한 기본적인 기능을 알아보도록 하겠습니다.


어노테이션(Annotation)은 왜 등장하였을까?

 Spring 어노테이션은 스프링 프레임워크의 버전 2.5부터 도입되었습니다. 이전 버전의 스프링에서는 XML 기반의 설정이 주로 사용되었으며, 모든 빈(Bean)과 의존성 주입(Dependency Injection)은 XML 설정 파일에서 수행되었습니다. 그러나 XML 기반의 설정은 매우 유연하지만 작성해야 할 코드가 많고 가독성이 떨어지는 문제가 있었습니다.

 

 이러한 문제들을 해결하고 개발자들의 생산성을 높이기 위해 Spring 어노테이션이 등장하게 되었습니다. 주요한 이유는 다음과 같습니다.

 

  1. 간결성과 가독성: XML 설정보다 어노테이션을 사용한 설정이 훨씬 간결하고 가독성이 좋습니다. 설정 내용이 코드에 직접 작성되기 때문에 개발자들은 빠르게 이해하고 수정할 수 있습니다.
  2. 컴파일 타임 검사: 어노테이션은 컴파일 타임에 검사되기 때문에 오타나 잘못된 설정을 미리 확인할 수 있습니다. 이는 런타임 시 발생하는 오류를 줄이고 안정성을 높입니다.
  3. Refactoring 지원: 어노테이션을 사용하면 리팩토링 작업을 더 쉽게 수행할 수 있습니다. 클래스 이름이나 패키지 구조를 변경해도 어노테이션을 업데이트하면 자동으로 참조가 변경되어 유지보수가 용이합니다.
  4. 일관성: 어노테이션은 관련 설정을 한 곳에서 직접 처리할 수 있기 때문에 코드와 설정이 일관성을 유지할 수 있습니다.
  5. Annotation Processor: Spring 어노테이션은 스프링의 Annotation Processor를 사용하여 런타임 시 동적으로 Bean을 생성하고 의존성 주입을 수행합니다.

Spring 어노테이션은 개발자들이 스프링 애플리케이션을 보다 효율적으로 개발하고 유지보수할 수 있도록 도와주었습니다. XML 설정과 어노테이션을 조합하여 사용하는 것도 가능하며, 개발자들은 자신의 프로젝트에 맞게 최적의 설정 방식을 선택할 수 있습니다.

 

 


 

자주 사용되는 어노테이션(Annotation) 알아보기

 @Component 어노테이션은 Spring의 컴포넌트 스캔을 통해 해당 클래스를 Spring의 Bean으로 등록하도록 지정합니다. 컴포넌트 스캔은 클래스 패스를 스캔하여 자동으로 Bean으로 등록하는 기능을 제공합니다.

 

 

 

@Autowired 어노테이션은 의존성 주입(Dependency Injection)을 수행합니다. 해당 어노테이션이 적용된 필드, 생성자, 메서드 파라미터에 해당하는 Bean을 찾아서 주입합니다.

 

2023.01.31 - [WEB/Spring] - [Spring]DI와 Autowired 확실히 알고 사용하기

 

[Spring]DI와 Autowired 확실히 알고 사용하기

📌Autowired 확실히 알고 사용하기 Spring으로 개발을 하면서 수도 없이 작성하는 어노테이션 중 하나인 @Autowired이 있다. 사실 정확한 동작 원리를 알고 쓴다기보단 습관처럼 선언하고 사용했기에

mooonstar.tistory.com

 

 

@Controller 어노테이션은 Spring MVC 컨트롤러로 등록되도록 지정합니다. @RestController 어노테이션은 RESTful 웹 서비스의 컨트롤러로 사용되며, @Controller와 @ResponseBody 어노테이션이 함께 적용된 것과 동일합니다.

2023.01.30 - [WEB/Spring] - [Spring]@Controller VS @RestController

 

[Spring]@Controller VS @RestController

@Controller VS @RestController 전통적인 Spring Framework의 대한 컨트롤로의 대한 선언으로 @Controller를 사용해 왔습니다. 하지만 좀 더 Restful 한 웹 서비스를 기대하면서 Spring 4 이후에 @RestController라는 새로

mooonstar.tistory.com

 

 

@Service 어노테이션은 비즈니스 로직을 처리하는 서비스 클래스로 지정합니다. @Service 어노테이션이 적용된 클래스는 @Component 어노테이션과 유사하게 스캔되어 Spring의 Bean으로 등록됩니다.

 

 

@Repository 어노테이션은 데이터베이스와 연동되는 DAO(Data Access Object) 클래스에 적용합니다. @Repository 어노테이션이 적용된 클래스도 @Component와 유사하게 스캔되어 Bean으로 등록됩니다.


 

@RequestMapping 어노테이션은 요청 URL과 메서드를 매핑합니다. 클래스 레벨에서 사용되면, 해당 컨트롤러의 모든 요청 메서드에 대한 기본 경로를 정의합니다. 메서드 레벨에서 사용되면, 특정 URL에 대한 요청을 해당 메서드가 처리하도록 설정합니다.

 

 

@PathVariable 어노테이션은 URL 경로에서 변수 값을 추출하여 메서드 파라미터에 바인딩합니다. 주로 RESTful 웹 서비스에서 경로 변수를 전달할 때 사용됩니다.

 

 

 

@RequestParam: @RequestParam 어노테이션은 요청 파라미터를 메서드 파라미터에 바인딩합니다. URL 매개변수로 전달된 데이터를 가져올 때 사용됩니다.


@ResponseBody: @ResponseBody 어노테이션은 메서드의 리턴 값을 HTT 응답 본문으로 직접 반환하도록 지정합니다. 주로 JSON 또는 XML과 같은 형식으로 데이터를 반환할 때 사용됩니다.

2023.01.27 - [WEB/Spring] - [Spring]@RequestBody와 @RequestParam 비교하여 이해하기

 

[Spring]@RequestBody와 @RequestParam 비교하여 이해하기

2023.01.25 - [WEB/Spring] - [Spring]@RequestParam의 파라미터 사용의 이해 [Spring]@RequestParam의 파라미터 사용의 이해 @RequestParam 클라이언트에서 서버로의 요청 시에 HTTP 요청 파라미터를 컨트롤러 메소드의

mooonstar.tistory.com

이 외에도 Spring은 다양한 어노테이션을 제공하여 트랜잭션 관리, 프로파일링, 보안 등 다양한 기능을 지원합니다. 각 어노테이션의 자세한 내용은 Spring 공식 문서를 참고하시면 도움이 될 것입니다.