반응형
01. root-context.xml에는?
- 보통 DAO 클래스 작성에 필요한 클래스를 Spring Bean으로 등록함
- 즉 데이타베이스 관련 필요한 객체들은 어떤 서블릿을 이용하던 사용할 수 있도록 root-context.xml 에 만듦
- 왜?
- 모든 서블릿에서 사용할 수 있게 하기 위해서
- DataSource클래스 , SqlSessionFactory클래스 , SqlSession클래스 , TransactionManager클래스 등
02. 🌈관련 라이브러리 빌드 처리
- 회사에서는 보통 제일 최신버전 사용 잘 안함
- 상황봐서 사용하기!!!
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="<http://www.springframework.org/schema/beans>"
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xmlns:tx="<http://www.springframework.org/schema/tx>"
xsi:schemaLocation="<http://www.springframework.org/schema/beans> <https://www.springframework.org/schema/beans/spring-beans.xsd>
<http://www.springframework.org/schema/tx> <http://www.springframework.org/schema/tx/spring-tx.xsd>">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- root-context.xml : 모든 Front Controller에서 객체로 사용될 클래스를 Spring Bean으로
등록하기 위한 Spring Bean Configuration File -->
<!-- => DAO 클래스 작성에 필요한 클래스를 Spring Bean으로 등록 -->
<!-- => DataSource, SqlSessionFactory, SqlSession, TransactionManager 등 -->
- DataSource 관련 클래스를 Spring Bean으로 등록
<!-- DataSource 관련 클래스를 Spring Bean으로 등록 - DBCP(DataBase Connection Pool) -->
<!-- => DataSource 객체 필드에 Connection 객체 생성에 필요한 값을 인젝션 처리 -->
<!--
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</bean>
-->
<!-- 퍼시스턴스 프레임워크(Persistence Framework)에서 발생되는 로그 이벤트를 전달받아
Spring Framework에서 처리하기 위해 driverClassName 필드값과 url 필드값을 log4jdbc-log4j2-jdbc4
라이브러리에서 제공하는 값으로 변경 -->
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
<property name="url" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</bean>
- SqlSessionFactoryBean 관련 클래스를 Spring Bean으로 등록
<!-- SqlSessionFactory 관련 클래스를 Spring Bean으로 등록 -->
<!-- => SqlSessionFactoryBean 객체 필드에 객체 생성에 필요한 값을 인젝션 처리 -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactoryBean">
<!-- configLocation 필드에 Mybatis Framework의 환경설정파일의 경로가 저장되도록 인젝션 처리 -->
<!-- => SpringMVC Framework에서 사용하는 스프링 컨테이너(WebApplicationContext 객체)는
[src/main/webapp] 폴더를 웹자원의 최상위 폴더로 처리하여 환경설정파일의 경로를 제공 -->
<!-- <property name="configLocation" value="/WEB-INF/spring/mybatis-config.xml"/> -->
<!-- [src/main/java] 폴더 또는 [src/main/resources] 폴더에 환경설정파일을 작성한 경우
classpath 접두사를 사용하면 스프링 컨테이너(WebApplicationContext 객체)로 접근 가능 -->
<!-- => 폴더의 패키지에 작성된 환경설정파일은 파일 시스템 형식으로 경로를 표현하여 접근 가능 -->
<!-- => 주의) 반드시 설정한 위치에는 [mybatis-config.xml] 파일이 있어야 함, 없으면 에러 떨어짐-->
<!-- <property name="configLocation" value="classpath:xyz/itwill/config/mybatis-config.xml"/> -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!-- dataSource 필드에 DataSource 관련 클래스의 Spring Bean이 저장되도록 인젝션 처리 - DI -->
<!-- => Mybatis 환경설정파일에서 environment 엘리먼트와 유사한 기능 제공 -->
<property name="dataSource" ref="dataSource"/>
<!-- typeAliasesPackage 필드에 DTO 클래스를 작성한 패키지가 저장되도록 인젝션 처리 -->
<!-- => XML 기반의 매퍼파일(MapperFile)에서 Java 자료형 대신 사용할 별칭을 제공하기 위한 기능 -->
<!-- => Mybatis 환경설정파일에서 typeAliases 엘리먼트의 package 엘리먼트와 유사한 기능 제공 -->
<property name="typeAliasesPackage" value="xyz.itwill10.dto"/>
<!-- mapperLocations 필드에 List 객체를 생성하여 저장되도록 인젝션 처리 -->
<!-- => List 객체에는 XML 기반의 매퍼 파일의 경로가 요소값으로 저장되도록 추가 - 매퍼 등록 -->
<!-- => Mybatis 환경설정파일에서 mappers 엘리먼트의 package 엘리먼트와 유사한 기능 제공 -->
<property name="mapperLocations">
<list>
<!-- [src/main/java] 폴더의 패키지에 매퍼 파일을 작성하기 위한 classpath 접두사 사용 -->
<value>classpath:xyz/itwill10/mapper/*.xml</value>
</list>
</property>
</bean>
- SqlSessionTemplate 관련 클래스를 Spring Bean으로 등록
<!-- SqlSession 관련 클래스를 Spring Bean으로 등록 -->
<!-- => SqlSessionTemplate 클래스로 객체를 생성하기 위한 생성자 매개변수에 SqlSessionFactoryBean
객체를 전달하여 필드 초기화 처리 - DI -->
<!-- destroy-method 속성을 사용하여 Spring Bean 소멸전 clearCache 메소드가 자동 호출되도록 설정 -->
<!-- => clearCache 메소드는 SqlSessionTemplate 객체 소멸전 SqlSessionTemplate 객체에 의해
사용된 JDBC 관련 객체를 정리하는 메소드 -->
<!-- => DAO 클래스의 메소드에서 SqlSession 객체 사용후 close() 메소드를 호출하지 않도록 설정 -->
<bean class="org.mybatis.spring.SqlSessionTemplate" id="sqlSession" destroy-method="clearCache">
<constructor-arg ref="sqlSessionFactoryBean"/>
</bean>
- TransactionManager 관련 클래스를 Spring Bean으로 등록
<!-- TransactionManager 관련 클래스를 Spring Bean으로 등록 -->
<!-- => Spring Bean의 식별자(beanName)을 반드시 [transactionManager]로 설정 -->
<!-- => dataSource 필드에 DataSource 관련 클래스의 Spring Bean을 인젝션 처리 -->
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
- annotation-driven
<!-- annotation-driven : @Transactional 아노테이션을 사용하여 TransactionManager 객체로 트랜잭션 처리 기능을 제공하기 위한 엘리먼트 -->
<!-- => tx 네임스페이스로 spring-tx.xsd 파일을 제공받아 엘리먼트 작성 -->
<tx:annotation-driven/>
</beans>
반응형
'framework > spring mvc 웹사이트제작법' 카테고리의 다른 글
[springMVC웹] 7. Mybatis Framework 관련 환경설정파일 - mybatis-config.xml (0) | 2024.08.05 |
---|---|
[springMVC웹] 6. 스프링빈 환경설정파일 - servlet-context.xml (0) | 2024.08.05 |
[springMVC웹] 4. 웹프로그램으로 만들기 위해 필요한 환경설정파일 - web.xml (0) | 2024.08.05 |
[springMVC웹] 3. 메이븐 라이브러리 환경설정파일 - pom.xml (0) | 2024.08.05 |
[springMVC웹] 2. 스프링MVC 프로젝트 생성법 (0) | 2024.08.05 |