study/Spring

1_Spring(흐름, root-context 설정)

스파이크12 2020. 2. 19. 08:42

@ handlerMapping(요청받은 URL로 어떤 Controller?->method() 지정) 연결

 

root-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- 
		root-context.xml 파일은 서버 구동 시 web.xml을 거쳐 바로 로딩 되는 즉, 
		pre-loading 되는 설정 파일이다.
		따라서 서버 구동 시 바로 셋팅 해야 되는 내용들을 작성하는 설정 파일로 보통
		DB연결 설정, 트랜잭션 처리, AOP 관련, 내 외부 모듈 연동 등등 스프링에서 
		제공하는 서비스들에 대한 설정을 관리한다. 
	 -->
	<!-- Root Context: defines shared resources visible to all other web components -->
	
	<!-- 
		1. DataSource 등록 
		- DataSourece는 서버 구동 시 동시에 연결이 되어야 하며
		  연결 정보 설정 시 root-context 제일 위쪽이 작성
		   -> 그래야지만 아래 작성되는 설정들에서 DataSource를
		         참조해서 사용 가능!
	-->	
	
	<!-- destroy-method="close" 
	      -> 주어진 세션을 자동으로 close 하라는 의미 -->
	<!-- 
		dbcp:database connection pool 
		class="org.apache.commons.dbcp.BasicDataSource"
		-> 다운받은 dbcp 라이브러리의 기본데이터소스 등록
		destroy-mehtod : "close" 자동으로 session.close해라
		bean : spring객체로 ioc(제어의역전)
	-->
	<bean id="dataSource"
	   class="org.apache.commons.dbcp.BasicDataSource"
	   destroy-method="close">
	   
	   <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
	   <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
	   <property name="username" value="spring"/>
	   <property name="password" value="spring"/>
	   <property name="defaultAutoCommit" value="false"/>
	</bean>
	
	<!-- 마이바티스 SqlSession 등록하기 (xml 방식으로 bean 등록)-->
	<!-- SqlSessionFactoryBean: MyBatis 설정파일을 바탕으로 
	SqlSessionFactory를 생성한다. Spring Bean으로 등록해야 한다. -->
	<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- mybatis-config.xml 설정 불러오기 -->   
		<property name="configLocation" 
			value="classpath:mybatis-config.xml"/>  
		<property name="dataSource" ref="dataSource"/>
		<!-- 위에 만들어진 dataSource를 참조 --> 
		<!-- 속성2가지로 sqlSessionFactoryBean을 만듬 -->
	</bean>
	<!-- SqlSessionTemplate : 
	SQL 실행이나 트랜잭션 관리 역할(Spring bean으로 등록해야함.)-->
	<!-- 우리가 사용하던 SqlSession과 같음 -->
	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg ref="sqlSessionFactoryBean"/>
	</bean>
	
	
</beans>