
7월 4일
...언제 자냐...
1.비즈니스 계층 구현하기




(1)서비스 패키지 설정
src>main>java 인터페이스 만들기
package com.keduit.service;
import java.util.List;
import com.keduit.domain.BoardVO;
public interface BoardService {
public void register(BoardVO board);
public BoardVO get(Long bno);
public List<BoardVO> getList();
public boolean modify(BoardVO board);
public boolean remove(Long bno);
}
(2)src>main>java 인터페이스 상속받는 클래스 만들기
package com.keduit.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.keduit.Mapper.BoardMapper;
import com.keduit.domain.BoardVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j;
@Log4j //로그부분은 Log4j가 관리해죠
@Service //서비스 계층 구현 어노테이션
@RequiredArgsConstructor //생성자 어노테이션(BoardMapper 선언 관연)
public class BoardServiceImpl implements BoardService {
//스프링아 빈중에 BoardMapper 있으면 구현해죠!!!
private final BoardMapper mapper;
@Override
public void register(BoardVO board) {
// TODO Auto-generated method stub
}
@Override
public BoardVO get(Long bno) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<BoardVO> getList() {
// 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;
}
}
(3)root.xml에 context 설정하기
<context:component-scan base-package="com.keduit.service"></context:component-scan>
(4)서비스 구현 하기
package com.keduit.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.keduit.Mapper.BoardMapper;
import com.keduit.domain.BoardVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j;
@Log4j //로그부분은 Log4j가 관리해죠
@Service //서비스 계층 구현 어노테이션
@RequiredArgsConstructor //생성자 어노테이션(BoardMapper 선언 관연)
public class BoardServiceImpl implements BoardService {
//스프링아 빈중에 BoardMapper 있으면 구현해죠!!!
private final BoardMapper mapper;
@Override
public void register(BoardVO board) {
log.info("register=================");
mapper.insertSelectKey(board);
}
@Override
public BoardVO get(Long bno) {
log.info("get===================");
return mapper.read(bno);
}
@Override
public List<BoardVO> getList() {
log.info("getList=====================");
return mapper.getList();
}
@Override
public boolean modify(BoardVO board) {
log.info("modify=====================");
return mapper.update(board)==1;
}
@Override
public boolean remove(Long bno) {
log.info("remove====================");
return mapper.delete(bno)==1;
}
}
(5)구현 서비스 테스트하기
src>test>java 에 서비스테스트 클래스 작성하여 코드가 맞는지 테스트하기
package com.keduit.service;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.keduit.domain.BoardVO;
import com.keduit.mapper.BoardMapperTest;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class) //SpringJUnit4ClassRunner.class 이클래스로 테스트 할때 쓸거야
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")//테스트 할때 참조를 하는 경로를 적어줌
@Log4j //뷰단에서 화면을 뿌려줄때 log관리는 Log4j로 할꺼야
public class BoardServiceTest {
@Setter(onMethod_=@Autowired)//Setter 객체 주입 어노테이션
private BoardService service;
@Test
public void testExist() {
log.info(service);
assertNotNull(service);
}
@Test
public void testRegister() {
BoardVO board=new BoardVO();
board.setTitle("서비스 등록글 제목");
board.setContent("서비스 등록글 내용");
board.setWriter("글쓴이");
service.register(board);
}
@Test
public void testGetList() {
service.getList().forEach(board->log.info(board));
}
@Test
public void testGet() {
log.info(service.get(5L));
}
@Test
public void testRemove() {
log.info("삭제결과=>"+service.remove(12L));
}
@Test
public void testUpdate() {
BoardVO board=service.get(6L);
if(board==null) return;
board.setTitle("안안녕녕");
log.info("수정결과=>"+service.modify(board));
}
}