스프링 프로젝트를 만들면서 답답함을 느꼈다.
어떻게 데이터가 전송되는지 그 구조와 원리를 내가 제대로 이해하지 못하고
프로젝트를 작성하고 있다는 생각이 들어서 다시 정확하게 짚고 넘어가야겠다고 생각했다.
내가 정리해볼 개념들의 목차는 다음과 같다.
목차
- Spring 실행 순서
- Impl? 인터페이스와 구현객체에 대하여
Spring 실행순서
우선 웹사이트 URL로 접근하여 정보를 요청한다. (버튼클릭, 글 작성 등)
Controller는 웹에서 처리해야 할 데이터를 받고, 이 데이터를 담당할 Service를 선택하여 호출한다.
그리고 처리한 데이터를 다음 페이지에서 볼 수 있게 세팅하며, 이동할 페이지를 리턴한다.
Service는 DAO를 호출하여 DB에 접근한다.
데이터를 DAO를 통해 주고받으며 *비즈니스 로직을 수행한다.
DAO(Data Access Object)는 DB의 데이터에 접근을 위한 객체이다.
DB에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용한다.
DB를 통해 데이터를 조회하거나 수정,삭제하는 역할을 담당한다.
VO(Value Object)는 DB에 있는 테이블 컬럼 값을 java에서 객체로 다루기 위해 사용한다.
*비즈니스 로직 :
컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성, 표시, 저장, 변경하는 부분을 말한다.
사용자에게 보여지지 않는 부분에서 데이터를 처리하는 코드라고 보면 된다.
이제 다시 파일들을 보자
위 파일에서 실행순서는
URL 호출 -> Controller -> ControllerImpl -> Service -> ServiceImpl -> DAO -> DAOImpl -> Service -> View
순서로 진행된다.
그런데 Impl는 왜 만들어줘야 하는걸까?
Impl? 인터페이스와 구현객체에 대하여
위 파일을 보면 MemberService.java와 MemberServiceImpl.java처럼 파일이 분리되어 존재하는 것을 확인할 수 있다.
내가 작성했던 스프링 게시판 코드에서 로그인 기능 부분만 가져와보겠다.
MemberService.java
public interface MemberService {
public MemberVO login(MemberVO memberVO) throws Exception;
}
MemberServiceImpl.java
@Service("memberService")
@Transactional(propagation = Propagation.REQUIRED)
public class MemberServiceImpl implements MemberService {
@Autowired
private MemberDAO memberDAO;
@Override
public MemberVO login(MemberVO memberVO) throws Exception{
return memberDAO.loginById(memberVO);
}
}
코드대로 MemberService.java는 인터페이스고, MemberServiceImpl.java는 구현객체이다.
이를 이해하기 위해선 우선 인터페이스와 객체에 대해 알아야한다.
개발코드가 인터페이스 메소드를 호출하면 인터페이스는 객체의 메소드를 호출한다.
객체는 인터페이스에서 정의된 추상 메소드와
동일한 메소드 이름, 매개 타입, 리턴 타입을 가진 실체 메소드를 가지고 있어야 한다.
이러한 객체를 인터페이스의 구현 객체라고 하고, 구현 객체를 생성하는 클래스를 구현 클래스라고 한다.
'자바 스프링 > 스프링 공부' 카테고리의 다른 글
스프링의 작동 원리 - 로그인편 (0) | 2022.05.17 |
---|---|
의존성 주입, 제어 역전에 대하여 (0) | 2022.04.28 |
자바 스프링 공부 - 자바 웹을 다루는 기술 목차 (0) | 2022.03.23 |