@Controller / @Service / @Repository
2023. 6. 6. 17:55ㆍ기술 창고/어노테이션 창고
728x90
SMALL
@Controller / @Service / @Repository
Spring Bean 객체를 만들 때 @Component 어노테이션으로 지정하여 해당 객체를 Bean 객체로 등록하고 생성해주었습니다.
하지만 더 나아가서 명확한 역할에 따른 스테레오 타입의 어노테이션들이 있습니다.
대표적인 어노테이션으로는 Controller, Service, Repository 가 있습니다.
- @Controller : 클라이언트의 요청을 받아 비즈니스 로직을 수행하는 단계의 서비스로 매핑을 시켜주거나, 모델에서 데이터를 가져오기 위해 연결시켜주는 Bean 객체를 지정하는 어노테이션.
- @Service : 비즈니스 로직을 본격적으로 수행하는 Bean 객체 지정 어노테이션.
- @Repository : 모델에 데이터를 넣거나 호출, 관리하거나 하는 데이터와 연관된 작업을 수행하는 Bean 객체를 지정하는 어노테이션.
<Controller>
@Controller
public class BusinessController{
private BusinessCalcultaionService service;
public BusinessController(BusinessCalcultaionService service){
this.service = service;
}
public int findMaxNum(){
return service.findMax();
}
}
<Service>
//@Component
@Service // 비즈니스 로직이 있는 경우에 Component 대신 Service로 표현할 수 있다.
public class BusinessCalcultaionService {
private DataService db;
public BusinessCalcultaionService(DataService db){
this.db = db;
}
public int findMax(){
return Arrays.stream(db.retrieveData()).max().orElse(0);
}
}
<Repository>
//@Component
@Repository // 데이터를 import 하거나 불러오거나 관리하기 위한 목적의 클래스는 Repository 어노테이션으로 대체할 수 있다.
@Primary
public class MongoDbDataService implements DataService{
@Override
public int[] retrieveData() {
return new int[] {11, 22, 33, 44, 55};
}
}
Component 를 사용해서 Bean 객체를 지정하고 관리해주는 것보다 스테레오 타입의 어노테이션을 사용하는 이유는 보다 개발자가 어떤 객체가 어떤 역할을 담당하고 있는지 명확하게 파악하고 이해하기 위함입니다.
728x90
반응형
LIST
'기술 창고 > 어노테이션 창고' 카테고리의 다른 글
@Named / @Inject (ft. CDI) (0) | 2023.05.31 |
---|---|
@PostConstruct / @PreDestroy (0) | 2023.05.30 |
@Scope (0) | 2023.05.30 |
@Lazy (0) | 2023.05.30 |
@Primary (0) | 2023.05.30 |