</beans>
위<property name="mapperLocations" value="classpath*:com/spring/app/mapper/*.xml" />
위치 mapper 설정<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
위치 정보 기술 설정<!-- ==== #15. myBatis(JDBC)설정 연결문자열 설정하기 ==== -->
<!-- DBCP 2.x를 위한 DataSource 객체 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="net.sf.log4jdbc.DriverSpy" />
<property name="url" value="jdbc:log4jdbc:oracle:thin:@//127.0.0.1:1521/xe" />
<property name="username" value="db 연결이름" />
<property name="password" value="비밀번호" />
<property name="initialSize" value="20"/> <!-- BasicDataSource 클래스 생성 후 최초로 getConnection() 메소드를 호출할 때 커넥션 풀에 채워 넣을 커넥션 개수(default=0). initialSize 값이 maxTotal 값보다 커버리면 논리적으로 오류가 있는 설정이다. -->
<property name="maxTotal" value="20"/> <!-- 동시에 사용할 수 있는 최대 커넥션 개수(default=8). initialSize 값과 maxTotal 값과 maxIdle 값과 minIdle 값 4개 모두 동일한 값으로 통일해도 무방하다. 커넥션 개수와 관련된 가장 중요한 성능 요소는 일반적으로 커넥션의 최대 개수이다 -->
<property name="maxIdle" value="20"/> <!-- Connection Pool에 반납할 때, 최대로 유지될 수 있는 커넥션 개수(default=8). maxTotal 값 과 maxIdle 값이 같은 것이 바람직하다. 왜냐하면, 만약에 maxTotal 값이 20 이고 maxIdle 값이 15 일때, 15개의 커넥션이 모두 사용중일 때 커넥션이 한개 더 생긴다면, maxTotal 은 아직 여유가 있으므로 프로세스는 계속 진행되고, 그러면 새로 연결을 하고, 반환하려고 하는데 15개의 커넥션이 모두 사용중 이라서 반납할 수 있는 여유공간이 없이 이미 꽉차 있으므로 그 커넥션은 반납하지 못하고 그냥 닫히게 된다. 15개의 커넥션이 계속해서 사용중이라면, 계속해서 새로 연결, 다시 닫기가 반복되므로 DBCP 를 사용하는 의미가 아예 없어진다. 그러므로 maxIdle 값과 maxTotal 값은 같은 값이거나 큰 차이가 없어야 바람직하다. -->
<property name="minIdle" value="20"/> <!-- Connection Pool에 반납할 때, 최소한으로 유지할 커넥션 개수(default=0). minIdle 값이 maxIdle 값 보다 커버리면 논리적으로 오류가 있는 설정이다. -->
<property name="maxWaitMillis" value="10000" /> <!-- pool이 고갈되었을 경우 최대 대기 시간(ms단위, default=-1 : 무한정) -->
<property name="defaultAutoCommit" value="true" /> <!-- defaultAutoCommit 속성은 true가 기본값이다. -->
</bean>
<!-- ==== #15. myBatis(JDBC)설정 mapper 파일 위치 지정하기 ==== -->
<!-- mapper 파일이란 sql 문을 가지고 있는 xml 파일을 말한다. -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="mapperLocations" value="classpath*:com/spring/app/mapper/*.xml" />
<!-- <property name="configLocation" value="classpath:com/spring/app/mybatisconfig/mybatis-config.xml" /> --> <!-- mybatis-config.xml에 대한 정보를 기술함 -->
<!-- 또는 -->
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" /> <!-- mybatis-config.xml에 대한 정보를 기술함 -->
<property name="dataSource" ref="dataSource" />
</bean>
<!-- ==== #15. myBatis(JDBC)설정 sqlSessionTemplate 의존 객체 설정 ==== -->
<bean id="sqlsession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<!-- ==== 로컬 오라클서버의 HR 연결 시작 ==== -->
<bean id="dataSource_2" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="net.sf.log4jdbc.DriverSpy" />
<property name="url" value="jdbc:log4jdbc:oracle:thin:@//127.0.0.1:1521/xe" />
<property name="username" value="hr" />
<property name="password" value="gclass" />
<property name="initialSize" value="20"/> <!-- BasicDataSource 클래스 생성 후 최초로 getConnection() 메소드를 호출할 때 커넥션 풀에 채워 넣을 커넥션 개수(default=0). initialSize 값이 maxTotal 값보다 커버리면 논리적으로 오류가 있는 설정이다. -->
<property name="maxTotal" value="20"/> <!-- 동시에 사용할 수 있는 최대 커넥션 개수(default=8). initialSize 값과 maxTotal 값과 maxIdle 값과 minIdle 값 4개 모두 동일한 값으로 통일해도 무방하다. 커넥션 개수와 관련된 가장 중요한 성능 요소는 일반적으로 커넥션의 최대 개수이다 -->
<property name="maxIdle" value="20"/> <!-- Connection Pool에 반납할 때, 최대로 유지될 수 있는 커넥션 개수(default=8). maxTotal 값 과 maxIdle 값이 같은 것이 바람직하다. 왜냐하면, 만약에 maxTotal 값이 20 이고 maxIdle 값이 15 일때, 15개의 커넥션이 모두 사용중일 때 커넥션이 한개 더 생긴다면, maxTotal 은 아직 여유가 있으므로 프로세스는 계속 진행되고, 그러면 새로 연결을 하고, 반환하려고 하는데 15개의 커넥션이 모두 사용중 이라서 반납할 수 있는 여유공간이 없이 이미 꽉차 있으므로 그 커넥션은 반납하지 못하고 그냥 닫히게 된다. 15개의 커넥션이 계속해서 사용중이라면, 계속해서 새로 연결, 다시 닫기가 반복되므로 DBCP 를 사용하는 의미가 아예 없어진다. 그러므로 maxIdle 값과 maxTotal 값은 같은 값이거나 큰 차이가 없어야 바람직하다. -->
<property name="minIdle" value="20"/> <!-- Connection Pool에 반납할 때, 최소한으로 유지할 커넥션 개수(default=0). minIdle 값이 maxIdle 값 보다 커버리면 논리적으로 오류가 있는 설정이다. -->
<property name="maxWaitMillis" value="10000" /> <!-- pool이 고갈되었을 경우 최대 대기 시간(ms단위, default=-1 : 무한정) -->
<property name="defaultAutoCommit" value="true" /> <!-- defaultAutoCommit 속성은 true가 기본값이다. -->
</bean>
<!-- ==== #15. myBatis(JDBC)설정 mapper 파일 위치 지정하기 ==== -->
<!-- mapper 파일이란 sql 문을 가지고 있는 xml 파일을 말한다. -->
<bean id="sqlSessionFactory_2" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="mapperLocations" value="classpath*:com/spring/app/mapper/*.xml" />
<!-- <property name="configLocation" value="classpath:com/spring/app/mybatisconfig/mybatis-config.xml" /> --> <!-- mybatis-config.xml에 대한 정보를 기술함 -->
<!-- 또는 -->
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" /> <!-- mybatis-config.xml에 대한 정보를 기술함 -->
<property name="dataSource" ref="dataSource_2" />
</bean>
<!-- ==== #15. myBatis(JDBC)설정 sqlSessionTemplate 의존 객체 설정 ==== -->
<bean id="sqlsession_2" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory_2" />
</bean>
<!-- ==== #16. 트랜잭션 처리를 위해서 아래와 같이 트랜잭션매니저 객체를 bean 으로 등록해야 한다. ==== -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- ==== #17. jackson 과 관련된 기능을 사용하기 위해 빈을 등록한다. ==== -->
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>