스프링 프레임워크에서 스테레오타입 어노테이션은 빈의 역할과 목적을 명시하기 위해 사용되는 어노테이션입니다. 이러한 어노테이션은 주로 컴포넌트 스캔을 통해 자동으로 빈을 등록하는 데 사용됩니다. 주요 스테레오타입 어노테이션은 다음과 같습니다:
1. @Component
- 설명: 일반적인 컴포넌트를 정의합니다. 다른 스테레오타입 어노테이션이 특별한 목적을 가지고 있다면, @Component는 가장 기본적인 컴포넌트로 사용됩니다.
@Component public class MyComponent { // ... }
2. @Service
- 설명: 서비스 레이어를 정의하는 데 사용됩니다. 비즈니스 로직을 수행하는 컴포넌트를 나타냅니다.
@Service public class MyService { // ... }
3. @Repository
- 설명: 데이터 액세스 객체(DAO)를 정의하는 데 사용됩니다. 데이터베이스와의 상호작용을 담당하는 컴포넌트를 나타냅니다. 데이터 접근 중 발생할 수 있는 예외를 데이터 접근 예외로 변환하는 기능도 제공합니다.
@Repository public class MyRepository { // ... }
4. @Controller
- 설명: 웹 MVC에서 컨트롤러를 정의하는 데 사용됩니다. 사용자 요청을 처리하고, 적절한 응답을 반환하는 역할을 합니다.
@Controller public class MyController { // ... }
5. @RestController
- 설명: @Controller와 @ResponseBody가 결합된 어노테이션으로, RESTful 웹 서비스의 컨트롤러를 정의하는 데 사용됩니다. 반환하는 객체가 JSON 형식으로 직렬화됩니다.
@RestController public class MyRestController { // ... }
사용 방법
스프링에서 스테레오타입 어노테이션을 사용할 때는 다음 단계를 따릅니다:
- 어노테이션 추가: 빈으로 등록할 클래스 위에 스테레오타입 어노테이션을 추가합니다.
- 컴포넌트 스캔 설정: @ComponentScan 어노테이션을 사용하여 스프링이 해당 패키지를 스캔하도록 설정합니다.
- 주입: 다른 컴포넌트에서 @Autowired를 사용하여 의존성 주입을 수행합니다.
예시
@Configuration @ComponentScan(basePackages = "com.example")
public class AppConfig { // ... }
@Service
public class MyService {
@Autowired
private MyRepository myRepository;
// ... }
@Repository
public class MyRepository { // ... }
스테레오타입 어노테이션은 코드의 가독성을 높이고, 빈의 역할을 명확히 하여 유지 보수성을 향상시키는 데 도움을 줍니다.