Spring | 09 비즈니스 계층

파과·2022년 9월 21일

비즈니스 계층 : 고객의 요구사항을 반영하는 계층. 프레젠테이션 계층과 영속 계층의 중간 다리 역할을 하게 된다.

비즈니스 계층의 설정

org.zerock.service 패키지를 만든다.
BoardService 인터페이스와 이를 구현한 BoardServiceImpl 클래스를 선언한다.

package org.zerock.service;

import java.util.List;

import org.zerock.domain.BoardVO;

public interface BoardService {

	public void register(BoardVO board);
	
	public BoardVO get(Long bno);
	
	public boolean modify(BoardVO board);
	
	public boolean remove(Long bno);
	
	public List<BoardVO> getList();
}

BoardServiceImpl 클래스

package org.zerock.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.zerock.domain.BoardVO;
import org.zerock.mapper.BoardMapper;

import lombok.AllArgsConstructor;
import lombok.Setter;
import lombok.extern.log4j.Log4j;

@Log4j
@Service
@AllArgsConstructor
public class BoardServiceImpl implements BoardService{

	//spring 4.3 이상에서 자동 처리
	@Setter(onMethod_ = @Autowired)
	private BoardMapper mapper;
	
	@Override
	public void register(BoardVO board) {
		
	}

	@Override
	public BoardVO get(Long bno) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean modify(BoardVO board) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean remove(Long bno) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<BoardVO> getList() {
		// TODO Auto-generated method stub
		return null;
	}
}

@Log4j 오류가 날 때는 pom.xml에 log4j를 파트1에서 했던 것처럼 버전 1.2.17로 바꿨는지 확인해보자.

스프링의 서비스 객체 설정

위에서 만든 것을 스프링 빈으로 인식하기 위해 root-context.xml에 스캔할 패키지를 추가한다.

root-context.xml 네임스페이스 탭에서 context를 추가하고, 다음 코드를 추가한다.

<context:component-scan base-package="org.zerock.service"></context:component-scan>

비즈니스 계층 구현과 테스트

테스트 생략.

등록 작업

BoardServiceImpl에서 파라미터로 전달되는 BoardVO 타입의 객체를 BoardMapper를 통해서 처리한다.

@Override
	public void register(BoardVO board) {
		log.info("register.........." + board);

		mapper.insertSelectKey(board);
	}

목록(리스트) 작업

BoardServiceImpl에서 현재 테이블에 저장된 모든 데이터를 가져오는 getList()

@Override
	public List<BoardVO> getList() {
		
		log.info("getList...........");
		return mapper.getList();
	}

조회 작업

게시물 번호가 파라미터이고 BoardVO의 인스턴스가 리턴된다.

@Override
	public BoardVO get(Long bno) {
		log.info("get.........." + bno);
		return mapper.read(bno);
	}

삭제 및 수정 작업

void로 설계할 수도 있지만 엄격하게 처리하기 위해 Boolean타입으로 처리한다.

	@Override
	public boolean modify(BoardVO board) {

		log.info("modify........." + board);
		return mapper.update(board) == 1;
	}

	@Override
	public boolean remove(Long bno) {

		log.info("remove.........." + bno);

		return mapper.delete(bno) == 1;
	}

0개의 댓글