보라코딩

코드로 배우는 스프링 웹 프로젝트 Part3 (ch9) 본문

코딩/Spring

코드로 배우는 스프링 웹 프로젝트 Part3 (ch9)

new 보라 2023. 2. 5. 22:03

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));
}

}