티스토리 뷰
스프링 프레임워크(Spring Framework)
자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로
동적인 웹사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다.
JSP보다 더 넓은 환경에서 빠르게 개발할 수 있다.
프레임워크
일종의 틀로 정해진 곳에 코드를 넣는 식으로 이해하면 된다.
스프링 프레임워크 동작순서
요청 Request
=> DispatcherServlet (web.xml) => HandlerMapping (servlet-context.xml)
=> 요청처리 Controller [Controller => Service => DAO => DB => DAO => Service => Controller]
=> DispatcherServlet => ViewResolver => View
=> DispatcherServlet
=> 응답 Response
xml 파일 내에는 sql문을 작성한다.
root-context.xml
DB 연결, 마이바티스 설정, 마이바티스 세션 설정
- 모든 서블릿이 공유할 수 있는 Bean들이 모인 공간으로 공통 bean을 설정
- 프로젝트의 어플리케이션 영역 설정
- 스프링 MVC 설정과 관련된 여러 처리를 담당
- JSP와는 관련없는 객체(Bean)을 설정 ex) Service, Repository ...
- View와 밀접하지 않은 정보를 기술하는 xml 파일
- 외부 jar파일등으로 사용하는 클래스는 bean 태그를 이용해 작성
ex) DB는 View(JSP)와는 관련이 없으므로, DB에 접속하기 위한 설정은 root-context.xml 에 설정
DTO(Data Transfer Object)
DB에서 생성한 테이블의 컬럼들을 private변수로 설정하고 getter / setter를 만드는 파일
- mybatis에서는 getter / setter로 데이터값을 얻어오는 일이 많아 테이블 생성할 때마다 만들면 된다.
Controller
url주소에 따른 기능 구현과 다음 페이지 설정을 주로 한다.
클래스 파일에 @Controller를 붙이면 되고
@RequestMapping(value="주소" [, method="방법"])를 사용해 주소를 나타내고 상위 메서드의 내용은 포함되므로 추가될 때마다 주소가 하나씩 늘어남
@RequestParam : getParameter()메서드 역할로 매개변수를 설정해 값을 받아온다. required=true/false로 받아오는 값이 없을 때 예외처리(true) 혹은
ServiceImpl
@Service 어노테이션을 붙여서 서비스 역할을 하도록 한다.
DAO 객체를 @Inject를 사용해 받아와서 실행시켜준다.
DAO(Data Access Object)
데이터 접근 객체로 xml에 작성한 sql 결과값을 DAO로 옮긴다.
DAO는 인터페이스 파일(기능별로 통일하고 싶은 것들을 정하기 위해서), DAOImpl은 자바클래스 파일
큰 기능(Board) 안에 세부기능(CRUD)별로 메서드명, 매개변수 형태, 매개변수명, 예외처리 등을 설정한다
@Repository 어노테이션 사용
아직 이해가 부족해서 정리가 잘되어있는 링크를 첨부한다.
https://devpad.tistory.com/24?category=773041
https://velog.io/@seculoper235/2.-DispatcherServlet-%EC%9D%B4%EB%9E%80
https://asfirstalways.tistory.com/m/334
https://readmeplz.tistory.com/100
https://velog.io/@haeniyu/210812-Spring-%EC%84%A4%EC%A0%952-root-context.xml
'배운 것 기록 > Spring' 카테고리의 다른 글
Controller 예외처리 (0) | 2022.08.21 |
---|---|
스프링 프로젝트 구조 / 흐름 정리 (0) | 2022.08.10 |
Spring 뜯어보기 - servlet-context.xml (0) | 2022.08.09 |
Spring 뜯어보기 - root-context.xml (0) | 2022.08.07 |
Spring 뜯어보기 - web.xml (0) | 2022.08.06 |