4.Spring/4.1 이론정리

SPRING_02_ root-context.xml 설정

마느링 2022. 6. 14. 12:05

root-context.xml : web.xml에 정의된 ContextLoaderListener가 로딩하는 자바빈(부모context)를 정의.

DispatcherServlet이 로딩하는 자바빈은 자식 컨텍스트임(여러개 존재 가능)

 

1. ORACLE에 접속하기 위한 설정파일

<context:property-placeholder location="classpath:jdbc.properties"/>

2. dataSource : 스프링 JDBC에서는 dataSource를 이용해서 DB에 접속

<bean id="dataSource" class ="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName" value="${jdbc.driverClassName}" />
	<property name="url" value="${jdbc.url}" />
	<property name="username" value="${jdbc.username}" />
	<property name="password" value="${jdbc.password}" />
</bean>

DriverManagerDataSource라는 클래스를 사용함

dataSource 인자로 (사전에 jdbc.properties에 정의한) driverClassName, url, username,password 정보를 읽어옴

 

3. SqlSessionFactory : Mybatis를 연동하기 위한 SqlSessionFactoryBean을 정의

<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource" />
	<property name="configLocation" value="classpath:/mybatis/mybatis-config.xml" />
	<property name="mapperLocations" value="classpath:/mybatis/mapper/**/*.xml"/>
</bean>

- dataSource :  2번에서 정의한 dataSource를 참조함

- configLocation : Mybatis 설정 파일의 위치 mybatis-config.xml

- mapperLocations : mapping 관련 설정파일 위치

 

4. java mapper 파일을 위한 자동 스캐닝할 경로 지정

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="ojc.board.repository, ojc.user.repository"/>
</bean>

java 파일은 ojc.board.repository, ojc.user.repository에 있다.

 

5. sqlSession : SqlSessionTemplate을 사용하기 위함

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"	destroy-method="clearCache">
	<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

3번에서 정의한 SqlSessionFactory를 참조함 .

생성자에서 sqlSessionFactory 변수로 받아서 SqlSessionFactory 를 참조해서 SqlSessionTemplate을 만들어서

Mybatis에서 쿼리 실행하기 위함.

 

6.transactionManager : 스프링 transaction을 위한 정의

<bean id="transactionManager"	class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="dataSource"/>
</bean>

7. tx: annotaton-driven :  @transaction이라는 어노테이션이 붙어있는 메소드가 있다면

그걸 찾아서 스프링에 transaction을 적용시켜주는 역할

<tx:annotation-driven transaction-manager="transactionManager"/>