컨트롤러 클래스
Rest Client(사용자 화면, 대내외채널 등 외부에서 호출된 사용자 요청)의 요청에 대응되는 클래스이다.
HTTP 클라이언트 요청을 처리(HTTP 의존적인 영역을 처리)힌다.
트랜잭션 처리 단위의 기준이 된다.
비즈니스 로직을 처리하기 위해 Service를 호출한다.
컴포넌트와 DBIO는 직접 처리하지 않는다.
각 Layer(컨트롤러, 서비스, 컴포넌트, DBIO)에 대한 호출 관계는 프로젝트 표준으로 정의되는 사항으로, 본 가이드에서는 컨트롤러에서는 서비스만 호출 할 수 있도록 되어 있다. |
1. 컨트롤러 클래스 생성
1. 컨트롤러 클래스를 생성한다. 패키지 익스플로러에서 우클릭 → New → 컨트롤러 를 선택한다.
2. 위자드에 타입 이름과 논리 이름, RequestMapping URL정보를 입력하여 생성한다.
3. 생성된 컨트롤러 클래스의 형식은 다음과 같다.
package bxcm.online.sample.controller;
import bxm.common.annotaion.BxmCategory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 직원 정보에 접근하기위한 컨트롤러
*
* @author sysadmin
*/
@RestController
@RequestMapping("/employee")
@BxmCategory(logicalName="직원 정보 관리", description="직원 정보에 접근하기위한 컨트롤러")
public class EmployeeController {
private Logger logger= LoggerFactory.getLogger(getClass());
}
@RestController 어노테이션이 표기되어 있어야 한다. @RequestMapping 어노테이션 내에 Controller의 URL 경로 매핑 정보를 표기한다. @BxmCategory의 logicalName에 간략한 기능명을 기술한다. |
4. 컨트롤러 클래스의 public 메소드를 작성한다.
/**
* 사원 조회
*
* @param empNo 사원번호
* @return EmployeeIO
*/
@GetMapping("/{empNo}")
@BxmCategory(logicalName="사원 조회", description="")
public EmployeeIO getEmployee(int empNo){
}
HTTP 요청 메소드 처리와 url 정보를 설정한다. (@GetMapping("/{empNo}")) @BxmCategory의 logicalName에 간략한 기능명을 기술한다. |
HTTP 요청 핸들러
HTTP 요청 메소드 | Annotation | 설명 |
---|---|---|
GET |
@GetMapping("/url") |
HTTP 서버에 데이터 검색을 요청 SELECT |
POST |
@PostMapping("/url") |
HTTP 서버에 데이터 등록/수정/삭제 요청(파일 전송 가능) INSERT/UDPATE/DELETE |
PUT |
@PutMapping("/url") |
HTTP 서버에 데이터 저장 요청(파일 전송 가능) INSERT/UPDATE |
DELETE |
@DeleteMapping("/url") |
HTTP 서버에 데이터 삭제 요청 DELETE |
PATCH |
@PatchMapping("/url") |
HTTP 서버에 데이터의 일부 갱신 요청 UPDATE |
HTTP 요청 메소드는 보안에 따라 GET, DELETE, PUT등은 사용하지 않고, POST만 사용할 수 있다. |
5. 서비스 호출 로직을 작성한다.
-
getBean을 사용 할 경우
private EmployeeService employeeService;
/**
* 사원조회
*
* @param empNo 사원번호
* @return EmployeeIO
*/
@GetMapping("/{empNo}")
@BxmCategory(logicalName="사원조회", description="")
public EmpIO getEmployee(@PathVariable("empNo") int empNo) {
employeeService = DefaultApplicationContext.getBean(employeeService, EmployeeService.class);
EmpIO in = new EmpIO();
in.setEmpNo(empNo);
return employeeService.retrieveEmp(in);
}
-
Autowired Annotation을 사용 할 경우
@Autowired
private EmployeeService employeeService;
/**
* 사원조회
*
* @param empNo 사원번호
* @return EmployeeIO
*/
@GetMapping("/{empNo}")
@BxmCategory(logicalName="사원조회", description="")
public EmpIO getEmployee(@PathVariable("empNo") int empNo) {
EmpIO in = new EmpIO();
in.setEmpNo(empNo);
return employeeService.retrieveEmp(in);
}
클라이언트로부터 요청이 들어오는 HTTP 메소드와 URL를 설정한다. PathVariable Annotation은 호출한 URL의 이름을 변수를 전달 받을 수 있다. |