댓글 서비스 레이어 만들기

서비스 레이어 만들기 개요

이번에는 서비스 인터페이스부터 만들고 서비스 구현 클래스가 구현하는 형태가 아니라, 서비스 클래스부터 만들어서 인터페이스를 생성하는 방법을 알아봅니다.

서비스 구현 클래스 만들기


/src/main/java/v2/mvc/spring/blog/service/impl/CommentServiceImpl.java

@Service
public class CommentServiceImpl implements CommentService {
    private CommentMapper commentMapper;

    public CommentServiceImpl(CommentMapper commentMapper) {
        this.commentMapper = commentMapper;
    }
}
  1. blog.service.impl 패키지 아래에 CommentServiceImpl 클래스를 생성합니다. 이 때 인터페이스는 지정하지 않습니다.
  2. 생성자 주입을 할 것이므로 commentMapper 멤버변수를 선언합니다.
  3. 생성자를 만듭니다.
  4. 클래스 선언 오른쪽에 implements CommentService 코드를 붙입니다.
  5. 클래스 선언 위에 @Service 어노테이션을 붙입니다.

서비스 인터페이스 생성 메뉴 진입

  1. CommentService 부분에 빨간 줄이 가 있는 것을 확인합니다.
  2. 빨간 줄 위에 마우스를 올립니다.
  3. create interface 메뉴를 클릭합니다.

서비스 인터페이스 생성 팝업

  1. 서비스 인터페이스 생성 팝업이 보여집니다.
  2. 패키지가 v2.mvc.spring.blog.service.impl로 되어 있습니다. .impl을 삭제해서 v2.mvc.spring.blog.service로 변경합니다.
  3. Finish 버튼을 누릅니다.

서비스 인터페이스 생성 확인

  1. STS가 만들어 준 서비스 인터페이스를 확인합니다.

댓글 추가 요청 VO 만들기

 


/src/main/java/v2/mvc/spring/blog/vo/CommentAddRequestVO.java

package v2.mvc.spring.blog.vo;

public class CommentAddRequestVO {
    private int blgContSeq;
    private String cmtBdy;
    private String tmpPw;

    public int getBlgContSeq() {
        return blgContSeq;
    }
    public void setBlgContSeq(int blgContSeq) {
        this.blgContSeq = blgContSeq;
    }
    public String getCmtBdy() {
        return cmtBdy;
    }
    public void setCmtBdy(String cmtBdy) {
        this.cmtBdy = cmtBdy;
    }
    public String getTmpPw() {
        return tmpPw;
    }
    public void setTmpPw(String tmpPw) {
        this.tmpPw = tmpPw;
    }
}
  1. blog.vo 패키지 아래에 CommentAddRequestVO 클래스를 생성합니다.
  2. 댓글 요청에 필요한 멤버변수들을 선언합니다.
  3. Generate getters and setters 메뉴를 통해 getter와 setter를 생성합니다.

댓글 응답 VO 작성


/src/main/java/v2/mvc/spring/blog/vo/CommentResponseVO.java

package v2.mvc.spring.blog.vo;

public class CommentResponseVO {
    private String cmtBdy;
    private int seqBlgCmt;

    public String getCmtBdy() {
        return cmtBdy;
    }
    public void setCmtBdy(String cmtBdy) {
        this.cmtBdy = cmtBdy;
    }
    public int getSeqBlgCmt() {
        return seqBlgCmt;
    }
    public void setSeqBlgCmt(int seqBlgCmt) {
        this.seqBlgCmt = seqBlgCmt;
    }
}
  1. CommentAddRequestVO 파일을 복사합니다.
  2. 같은 패키지에 붙여넣기하면 클래스 이름을 물어봅니다. CommentResponseVO 로 입력합니다.
  3. CommentResponseVO 클래스 본문을 모두 삭제합니다.
  4. cmtBdy, seqBlgCmt 멤버 변수를 CommentAddRequestVO에서 복사합니다.
  5. cmtBdy, seqBlgCmt 멤버 변수에 해당하는 getter와 setter를 CommentAddRequestVO에서 복사합니다.

모델 매퍼, 커먼즈 코덱 메이븐 다운로드


pom.xml

<!-- https://mvnrepository.com/artifact/org.modelmapper/modelmapper -->
<dependency>
    <groupId>org.modelmapper</groupId>
    <artifactId>modelmapper</artifactId>
    <version>3.2.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.16.0</version>
</dependency>
  1. pom.xml 파일에 modelmapper 의존성을 추가합니다.
  2. commons-codec 의존성도 추가합니다.
  3. 메이븐 빌드를 통해 라이브러리를 다운로드합니다.

서비스 구현 클래스 add 메소드 추가


/src/main/java/v2/mvc/spring/blog/service/impl/CommentServiceImpl.java

@Override
public CommentResponseVO add(CommentAddRequestVO commentAddRequestVO){
    ModelMapper modelMapper = new ModelMapper();
    CommentInsertVO commentInsertVO = modelMapper.map(commentAddRequestVO, CommentInsertVO.class);

    if (commentInsertVO.getTmpPw() != null) {
        String sha256hex = DigestUtils.sha256Hex(commentInsertVO.getTmpPw());
        commentInsertVO.setTmpPw(sha256hex);
    }

    int affectRowCount = this.commentMapper.insert(commentInsertVO);

    if (affectRowCount == 0) {
        return null;
    }

    ModelMapper modelMapperInsertToResponse = new ModelMapper();
    CommentResponseVO commentResponseVO = modelMapperInsertToResponse.map(commentInsertVO, CommentResponseVO.class);

    return commentResponseVO;
}
  1. CommentServiceImpl.java 파일을 편집기로 엽니다.
  2. add 메소드를 추가합니다.

DigestUtils 네임스페이스 선택

  1. 자동 불러오기를 실행시키면 DigestUtils 패키지를 선택하라는 화면이 나옵니다.
  2. org.apache 로 시작하는 패키지를 선택합니다.

서비스 인터페이스에 add 메소드 추가

  1. add 메소드 정의 위에 마우스를 올립니다.
  2. Create 'add' ... 를 클릭합니다.
  3. 서비스 인터페이스에 add 메소드가 추가되었는지 확인합니다.