건축 패턴에 대해 물어보고 싶습니다. 나는 내가 묻는 것을 데모하기 위해 두 개의 스 니펫 코드를 작성한다.매퍼 코드, 서비스 레이어 또는 컨트롤러 레이어를 배치하는 데 가장 적합한 레이어는 무엇입니까?
첫 번째 방법은 다음과 같습니다
//a method on controller layer (in spring framework)
@RequestMapping(...)
public ShopDTO findShop(final Long shopId){
Shop shop = shopService.getShopById(shopId);
ShopDTO shopDTO = shopMapper.toShopDTO(shop);
return shopDTO;
}
//A method on service layer
@Transactional
public Shop getShopById(final Long shopId){
//some code to find an entity by id
}
* 참고 : 컨트롤러 레이어에 shopDTO에 가게 엔티티에서지도 어떤 코드입니다.
두 번째 방법은 다음과 같습니다
//a method on controller layer (in spring framework)
@RequestMapping(...)
public ShopDTO findShop(final Long shopId){
ShopDTO shopDTO = shopService.getShopById(shopId);
return shopDTO;
}
//A method on service layer
@Transactional
public ShopDTO getShopById(final Long shopId){
Shop shop = shopRepository.findById(shopId);
ShopDTO shopDTO = shopMapper.toShopDTO(shop);
return shopDTO;
}
* 참고 : 서비스 계층에 shopDTO에 가게 엔티티에서지도 어떤 코드입니다.
예를 들어 Spring 프레임 워크 코드를 사용합니다.
내 질문은 : 최고의 레이어는 매퍼 코드를 배치하는 것입니다. 왜 그런지 말해 줄 수 있니?
측면에서 컨트롤러 레이어에 어떤 유형의 로직을 배치해야하며 서비스 레이어에는 무엇을 배치해야합니까?
감사합니다.
봄 작동하는 방법을 모르겠지만이 부분을하고있는 완전한 DLL을 가지고있는 것이 좋은 디자인이라고 생각합니다. 거기에 두 개의 개체 사이에 번역을 할 수 있습니다, 당신은 거기에 일부 번역 businessRule을 구현 사용할 수 있습니다. 따라서 다른 구성 요소에 대해이 DLL을 다시 사용할 수 있습니다. –
답해 주셔서 감사합니다. 다른 매핑 구성 요소가 있습니다. 나는 그것이 최고임을 안다. 내가 물어보고 싶은 것은 컨트롤러 계층에 어떤 유형의 로직을 배치해야하며 서비스 계층에는 무엇을 배치해야하는지입니다. 나는 내 질문을 업데이트했다. –
컨트롤러는 아무 것도하지 않습니다. 컨텍스트 항목 만 제공하고 비즈니스가 의미하는 기능을 제공합니다. 이 함수들에서 사용자는 기본 데이터 함수 (업데이트, 삭제, 생성)로 서비스 레이어를 호출합니다. 모든 논리는 이러한 서비스 기능에 있어야합니다. 컨트롤러가 최상의 "if logic"을 가질 수 없다면 이상적입니다. –