보라코딩
코드로 배우는 스프링 웹 프로젝트 Part3 (ch9) 본문
Service에 대해 배워보자
아래와 같이 org.zerock.service 패키지 만들고
BoardService 라는 interface 먼저 만든다.
이후 이를 구현하는 BoardServiceImpl 만든다.
interface BoardService
package org.zerock.service;
public interface BoardService {
}
BoardServiceImpl implements BoardService
package org.zerock.service;
import org.springframework.stereotype.Service;
import org.zerock.mapper.BoardMapper;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import lombok.extern.log4j.Log4j;
@Service
@Log4j
@RequiredArgsConstructor
@ToString
public class BoardServiceImpl implements BoardService {
private final BoardMapper mapper; //final로 하면 자동 주입해줌
}
그리고 root-context.xml에서 하기 내용 추가 (스프링 빈으로 인식할 수 있게)
<context:component-scan base-package="org.zerock.service"></context:component-scan>
다음 테스트 진행
아래와 같이 패키지와 폴더 작성
BoardServiceTests
package org.zerock.service;
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 lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class BoardServiceTests {
@Autowired // 인터페이스를 주입
private BoardService service;
@Test
public void testPrint() {
log.info(service);
}
}
BoardService
package org.zerock.service;
import java.util.List;
import org.zerock.domain.BoardVO;
public interface BoardService {
void register(BoardVO board);
BoardVO get(Long bno);
int modify(BoardVO board);
int remove(Long bno);
List<BoardVO> getList();
}
BoardServiceImpl
package org.zerock.service;
import java.util.List;
import org.springframework.stereotype.Service;
import org.zerock.domain.BoardVO;
import org.zerock.mapper.BoardMapper;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import lombok.extern.log4j.Log4j;
@Service
@Log4j
@RequiredArgsConstructor
@ToString
public class BoardServiceImpl implements BoardService {
private final BoardMapper mapper; //final로 하면 자동 주입해줌
@Override
public void register(BoardVO board) {
mapper.insert(board);
}
@Override
public BoardVO get(Long bno) {
return mapper.read(bno);
}
@Override
public int modify(BoardVO board) {
return mapper.update(board);
}
@Override
public int remove(Long bno) {
return mapper.delete(bno);
}
@Override
public List<BoardVO> getList() {
return mapper.getList();
}
}
BoardServiceTests
package org.zerock.service;
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 lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class BoardServiceTests {
@Autowired // 인터페이스를 주입
private BoardService service;
@Test
public void testPrint() {
log.info(service);
}
@Test
public void testGetList() {
service.getList().forEach(board -> log.info(board));
}
}
'코딩 > Spring' 카테고리의 다른 글
코드로 배우는 스프링 웹 프로젝트 Part3 (ch11끝) (0) | 2023.03.05 |
---|---|
코드로 배우는 스프링 웹 프로젝트 Part3 (ch11) (0) | 2023.02.26 |
코드로 배우는 스프링 웹 프로젝트 Part3 (ch8) (0) | 2023.02.05 |
코드로 배우는 스프링 웹 프로젝트 Part3 (0) | 2023.02.05 |
코드로 배우는 스프링 웹 프로젝트 Part2 (1) | 2023.01.29 |