서비스 클래스
컨트롤러와 1:1로 매핑되는 클래스이다. 서비스에서는 컴퍼넌트들만 호출 할 수 있다.
1. 서비스 IO 작성
서비스 IO 작성도 DBIO IO 작성과 동일하다. IO 생성 및 작성 방법은 'DBIO IO 생성’을 참고한다. 아래는 생성된 IO 화면이다.
서비스 IO는 bxcm.online.sample.service 하위에 io 패키지 하위에 작성했다. |
2. 서비스 작성
1. 서비스 클래스를 생성한다. 패키지 익스플로러에서 우클릭 → New → Service 클래스를 선택한다. (단축키 : Ctrl + N → Service 클래스 선택)
2.새로운 서비스 Wizard에서 타입 이름과 논리 이름을 입력한다.
3. 생성된 컴포넌트 클래스의 형식은 다음과 같다.
package bxcm.online.sample.service;
import bxm.common.annotaion.BxmCategory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
/**
* 직원조회를 위한 서비스이다.
*
* @author sysadmin
*/
@Service
@BxmCategory(logicalName="직원조회 서비스", description="직원조회를 위한 서비스이다.")
public class EmployeeService {
private Logger logger= LoggerFactory.getLogger(getClass());
}
@Service 어노테이션이 표기되어 있어야 한다. |
4. 서비스 메소드의 형식은 컴포넌트와 동일하다. 내부에 컴포넌트 호출 과정을 작성한다.
컴포넌트 IO가 서비스 IO를 사용하는 경우 객체 그대로 넘긴다.
@BxmCategory(logicalName = "직원정보 단건 조회")
public EmpIO retrieveEmp(EmpIO input) {
employeeComponent = DefaultApplicationContext.getBean(employeeComponent, EmployeeComponent.class);
output = employeeComponent.getEmployee(input);
return output;
}
컴포넌트 메소드 IO와 서비스 IO 사이에서 필요한 필드를 코딩으로 매핑한다.
@BxmCategory(logicalName = "직원정보 단건 조회")
public EmpIO retrieveEmp(EmpIO input) {
// employeeComponent getBean
employeeComponent = DefaultApplicationContext.getBean(employeeComponent, EmployeeComponent.class);
//컴포넌트 입력객체 매핑
EmployeeIO componentOut = employeeComponent.getEmployee(input.getEmpNo());
//컴포넌트 출력객체 매핑
EmpIO output = new EmpIO();
output.setEmpNo(componentOut.getEmpNo()); // 사원번호
output.setEmpNm(componentOut.getEmpNm()); // 사원명
output.setOcptnNm(componentOut.getOcptnNm()); // 조직명
output.setMngrEmpNo(componentOut.getMngrEmpNo()); // 관리자사원번호
output.setHireDt(componentOut.getHireDt()); // 입사일자
output.setPayAmt(componentOut.getPayAmt()); // 임금
output.setDeptNo(componentOut.getDeptNo()); // 부서번호
return output;
}