일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이선
- 파이썬
- 정보처리기사
- 정처기예상문제
- 스프링
- 자바
- 게시판
- function
- 소프트웨어설계
- 게시판만들기
- spring
- 어노테이션
- 자바의정석요약
- 프로그래머스
- CRUD구현
- 정보처리기사필기
- java
- 자바의정석
- 정처기공부
- 스프링부트
- springboot
- 정처기필기
- PYTHON
- CRUD
- 코딩테스트
- 정처기
- 소프트웨어개발
- 게시판프로젝트
- 정처기설명
- 이것이자바다
- Today
- Total
Helmi
게시판 프로젝트 - 비즈니스 계층 ①비즈니스 계층의 설정 본문
비즈니스 계층 : 고객의 요구사항 반영하는 계층. 프레젠테이션 계층과 영속 계층의 중간 다리 역할 하게 됨.
영속 계층은 데이터베이스 기준으로 해서 설계 나눠 구현하나 비즈니스 계층은 로직 기준으로 해서 처리
일반적으로 비즈니스 영역에 있는 객체들은 '서비스(service)'라는 용어 많이 사용 함.
com.board.service 패키지 작성
설계시 각 계층 간 연결은 인터페이스 이용해 느슨한(loose) 연결(결합)을 함.
게시물은 BoardService 인터페이스와 인터페이스 구현한 BoardServiceImpl 클래스 선언
BoardService.java 인터페이스
package com.board.service;
import java.util.List;
import com.board.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();
}
BoardService 메서드 설계시 메서드 이름은 현실적 로직 이름 붙이는 것이 관례.
명백히 반환해야 할 데이터 있는 'select'해야 하는 메서드는 리턴 타입 지정 가능
게시물은 특정 게시물 가져오는 get() 메서드와 전체 리스트 구하는 getList() 경우 처음부터 메서드의 리턴 타입 결정해 진행 가능
BoardService 인터페이스를 구현하는 구현테는 BoardServiceImple 이라는 클래스로 작성
약간의 로그 기록 할 수 있는 정도 코드 작성
BoardServiceImpl.java 일부
package com.board.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.board.domain.BoardVO;
import com.board.mapper.BoardMapper;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j;
@Log4j
@Service
@AllArgsConstructor
public class BoardServiceImpl implements BoardService{
//spring 4.3이상에서 자동 처리
private BoardMapper mapper;
@Override
public void register(BoardVO board) {}
......
}
BoardServiceImpl.java에 가장 중요한 부분은 @Service 어노테이션
@Service는 계층 구조상 주로 비즈니스 영역 담당하는 객체임을 표시하기 위해 사용
작성된 어노테이션은 패키지 읽어 들이는 동안 처리 됨
BoardServiceImpl가 정상적으로 동작하기 위해서는 BoardMapper 객체 필요
@Autowired같이 직접 설정해줄 수 있고, Setter 이용해 처리 가능. Lombok 이용시 아래와 같이 만들 수 있음
@Log4j
@Service
public class BoardServiceImpl implements BoardService{
@Setter(onMethod_ = {@Autowired})
private BoardMapper mapper;
스프링 4.3부터는 단일 파라미터 받는 생성자 경우 필요한 파라미터 자동으로 주입 가능
@AllArgsContructor는 모든 파라미터 이용하는 생성자를 만듬.
스프링의 서비스 객체 설정(root-context.xml)
비즈니스 계층 인터페이스와 구현 클래스 작성 되면, 스프링 빈으로 인식 위해 root-context.xml에 @Service 어노테이션 있는 com.borad.service 패키지 스캔(조사)하도록 추가
root-context.xml 추가
<context:component-scan base-package="com.board.service">
</context:component-scan>
'SpringBoot' 카테고리의 다른 글
프레젠테이션(웹)계층 CRUD 구현 -①Controller 작성 (0) | 2023.05.04 |
---|---|
게시판 프로젝트 - 비즈니스 계층 ② 비즈니스 계층의 구현, 테스트 (0) | 2023.05.03 |
게시판 프로젝트 - CRUD 구현 ⑤ 영속 영역 CRUD 구현, UPDATE (0) | 2023.05.01 |
게시판 프로젝트 - CRUD 구현 ④ 영속 영역 CRUD 구현, DELETE (0) | 2023.04.30 |
게시판 프로젝트 - CRUD 구현 ③ 영속 영역 CRUD 구현, READ(SELET)처리 (0) | 2023.04.29 |