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을 사용하는 가장 주된 요소는 유지보수를 편하게 하기 위함
유지보수를 편하기 하기위해선
필요한 객체를 직접 new 하지 않고 어디에선가 받아와
인터페이스를 적극적으로 활용해
의존관계를 느슨하게 하면 어떤 클래스를 수정했을때 그 여파가 크지않는 장점이 있어
의존은 하는데 직접 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 |