spring 설명 그림

2017. 9. 7. 13:12· FrameWork/spring
반응형
SMALL

home.jsp 에

이렇게 코딩


인덱스에서 시작해보면

home.do 요청에 대해서


이렇게 나오면 된것임


이 3개 파일 test.mybatis 패키지에 복사


이렇게 되게


Configuration 에

이것만 남기고






MemberMapper 가서

다지우고 이것만 남겨


MyBatis DB 에 관련된 설정을

servlet-context.xml 에서 할거야


servlet-context.xml 로가

이거 코딩


<!-- DB 접속 정보를 가지고 있는 문서 읽어들이기 -->

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="location">

<value>classpath:test/mybatis/db.properties</value>

</property>

</bean>

<!-- DataSource 설정 -->

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">

<property name="driverClass" value="${driver}"/>

<property name="url" value="${url}"/>

<property name="username" value="${username}"/>

<property name="password" value="${password}"/>

</bean>

<!-- SqlSessionFactory 객체 -->

<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource"/>

<property name="configLocation"

value="classpath:test/mybatis/Configuration.xml"/>

</bean>

<!-- Dao 에 주입해줄 SqlSession 인터페이스를 구현한

SqlSessionTemplate 객체 -->

<bean class="org.mybatis.spring.SqlSessionTemplate">

<constructor-arg name="sqlSessionFactory" ref="sessionFactory"/>

</bean>



문서를 읽어서 넣어주는것




SpringBeanContainer 에서 Dao 에 필요한 객체를 가지고 있다가


Dao 에 필요한 의존객체를 주입해 줄거야


의존객체를 주입해준다.  →  이거를 dependency injection ( DI ) 라고 함


필요한 객체를 직접 new 해서 쓰면 유지보수가 힘들어서 그렇게 쓰지 않고

SpringBeanContainer 에서 받아와서 쓰겠다는 것.


회원 목록보기를 눌렀을때

/member/list.do 요청이 돼


이 요청 처리를 하려면 DB를 갔다와야해


.do 로 요청하는 요청은


Spring 에서 web.xml 에 SpringDispatcher servlet 이 받아들여



Dispatcher Servlet 는 기본적으로 제공 되는것이라 마음대로 수정을 못해


그래서 servlet-context.xml 이 있어


서버가 동작을 할때 servlet-context.xml를 로딩 시켜서 Dispatcher Servlet을 동작시켜

요청을 처리할 컨트롤러 객체가 있어

Service 가 끼어서

비지니스 로직을 처리해


서비스는 Dao가 필요해

Dao를 통해서 Insert, Update, Delete 이런 작업을 해


어떤 서비스는 비지니스 로직 처리 결과 모델(데이타)이 있을수 있어

모델을 리퀘스트에 담아서 포워드 이동해


뷰 페이지는 리퀘스트에 담긴걸 이용해서 클라이언트한테 response 응답 해






어떤 요청을 처리하기 위해

컨트롤러 서비스 Dao가 필요


컨트롤러는 서비스 객체에 의존해

서비스는 DB관련한 작업을 많이 하기에 Dao 객체에 의존해



Dao는 MyBatis를 사용하는 Dao 라면

SqlSession 객체에 의존해


이렇게 의존 관계가 엮여 있어



Spring Frame Work을 사용하는 가장 주된 요소는 유지보수를 편하게 하기 위함

유지보수를 편하기 하기위해선

  1. 필요한 객체를 직접 new 하지 않고 어디에선가 받아와

  2. 인터페이스를 적극적으로 활용해


의존관계를 느슨하게 하면 어떤 클래스를 수정했을때 그 여파가 크지않는 장점이 있어



의존은 하는데 직접 new 해서 참조값을 가져오지 않고

다 SpringBeanContainer 에 넣어두고

필요한 것을 주입받아서 써


의존객체를 주입 받는걸 dependency injection ( DI ) 라고 함


다 SpringBeanContainer 에 집어 넣는 방법은 ComponentScan 을 하면 돼

특정 어노테이션을 갖고 있는 클래스를 ComponentScan을 하면 자동으로 SpringBeanContainer에 담겨


Controller 에서 특정 service 객체가 필요하면 주입받고

Service 에서 특정 Dao 객체가 필요하면 주입받고

Dao 에서 특정 SqlSession 이 필요하면 주입받아서 사용해



모든 응답이 포워드 이동해서 응답받는건 아니야

어떤 응답을 redirect 할수도 있어.


이 객체들은 다 Spring Bean Container 에서 관리를 할거야

얘는 SqlSession 인터페이스를 구현한 클래스야


MyBatis 에서 SqlSession 객체를 사용 하려면 이걸 주입해 줘야해


Dao가 의존하고 있는 객체는 준비가 되었는데



Service와 Controller 들도 만들어 줘야해


Service 클래스를 생성할때 인터페이스를 구현해서 만들고

Controller 클래스를 만들때고 인터페이스를 구현해서 만들어야해


의존관계를 느슨하게 하기 위해서



반응형

'FrameWork > spring' 카테고리의 다른 글

[Spring] DispatcherServlet이란  (1) 2020.11.16
스프링의 핵심 3대요소  (0) 2017.09.11
리스트 파일 pdf 로 다운받기  (0) 2017.08.24
Spring_Aop_Anno2  (0) 2017.07.31
Spring_Aop_Anno  (0) 2017.07.31
'FrameWork/spring' 카테고리의 다른 글
  • [Spring] DispatcherServlet이란
  • 스프링의 핵심 3대요소
  • 리스트 파일 pdf 로 다운받기
  • Spring_Aop_Anno2
- 광속거북이 -
- 광속거북이 -
IT관련 일하면서 공부 및 일상 에 관한 내용들을 기록하기 위한 블로그 입니다.
누리IT관련 일하면서 공부 및 일상 에 관한 내용들을 기록하기 위한 블로그 입니다.
- 광속거북이 -
누리
- 광속거북이 -
전체
오늘
어제
  • 카테고리 (452)
    • 구글문서 (4)
    • 설치방법들 (3)
    • FrameWork (73)
      • Django (6)
      • Python (32)
      • AngularJS (13)
      • spring (21)
    • Programing (61)
      • JAVA (11)
      • etc... (2)
      • 오류 해결 (29)
      • Algorithm (5)
    • Front-End (25)
      • CSS (3)
      • html (6)
      • javascript (10)
      • vueJS (5)
    • Back-End (35)
      • 리눅스 (12)
      • PostgreSQL (14)
      • MySQL (2)
      • Shell (1)
      • docker (1)
      • GIT (1)
    • Util (9)
      • BIRT (2)
      • JMeter (3)
      • MobaXterm Personal (1)
      • ClipReport (2)
    • 이클립스 설정 (10)
      • SVN (1)
    • 업무중 기록해둘 것들... (1)
    • 영화 (8)
    • etc.. (198)
      • 여행 (25)
      • 문화생활 (3)
      • tistory (3)
      • 글, 생각 (4)
      • 먹을 곳 (29)
      • issue (4)
      • 결혼 (1)
      • 가족여행기록 (1)
      • Tip (51)
      • 강아지 (5)
      • 일기 (0)
      • 게임 (3)
      • 주식 (7)
      • 코로나19 (7)
      • 맥북 (5)
    • 비공개 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 인텔리제이
  • tomcat
  • VSCode
  • Java
  • 합정
  • 해지
  • 설치
  • IntelliJ
  • PostgreSQL
  • 포켓몬고
  • 이클립스
  • 리눅스
  • 윈도우10
  • 제주도
  • 맛집
  • 연천
  • 백준
  • 카페
  • 설정
  • 삼성증권

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
- 광속거북이 -
spring 설명 그림
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.