Spring 프레임워크 스테레오 타입 어노테이션
@Component
제네릭 어노테이션이며 모든 클래스에 적용이 가능합니다. 예를 들면 특정 클래스에 Spring Bean을 생성하려는 경우 사용합니다. 모든 스테레오 타입 어노테이션의 기초며 다양하게 나누어져 있습니다.
1. @Service
@Service
public class BussinessCalculationService {
private DataService dataService;
public BussinessCalculationService(DataService dataService) {
super();
this.dataService = dataService;
}
public int finMax() {
return Arrays.stream(dataService.retrieveData())
.max().orElse(0);
}
}
@Service는 보통 어노테이션한 클래스에서 비즈니스 로직이 있다는 것을 나타냅니다. 즉, 클래스에 비즈니스 로직이 있으 @Component를 대신하여 사용할 수 있습니다.
2. @Controller
@Controller는 웹 컨트롤러와 같이 컨트롤러 클래스 인경우 자주 사용되는 어노테이션입니다. 웹 어플리케이션과 REST API에서 컨트롤러를 정의하는 데 사용됩니다.
3. @Repository
@Repository
@Primary
public class MongoDbDataService implements DataService {
@Override
public int[] retrieveData() {
return new int[] {11, 22, 33, 44, 55};
}
}
@Repository는 Bean이 DB와 통신하는 경우, 데이터를 저장하거나 검색하여 조작하는 경우 @Component를 대신하여 사용됩니다.
이와 같이 @Component 이외에도 @Component를 특하한 것이 많습니다. 또한 위에서 서술한 @Component, @Service, @Controller, @Repository 모두 스테레오 타입 어노테이션이라고 합니다.
스테레오 어노테이션 중 무엇을 선택해 사용하나요?
각자의 설명에 맞는 구체적인 어노테이션을 사용하고 @Service, @Controller, @Repository에 포함되지 않는 경우 @Component를 사용해야합니다. 그 이유는
- 구체적 어노테이션을 사용하면 자신의 의도한 바를 확실히 나타낼 수 있습니다.
- AOP(관점 지향 프로그래밍)를 사용하여 어노테이션을 감지하고 그 위에 부가적인 동작을 추가할 수 있습니다. 예를 들어 @Repository 어노테이션이 있다면 Spring 프레임워크에서 자동으로 JDBC 예외 변환 기능에 연결합니다.
'코딩 공부 > web & Java' 카테고리의 다른 글
[Spring] SpringBoot Auto Configuration (0) | 2023.10.12 |
---|---|
[Spring] 중요한 어노테이션 정리 및 복습 (0) | 2023.10.09 |
[Spring] Spring XML 설정 (1) | 2023.10.09 |
[Spring] Jakarta Contexts and Dependency injection (CDI) (1) | 2023.10.06 |
[Java] Java EE, J2EE, Jakarta EE (1) | 2023.10.06 |