root.context.xml
- 스프링 설정 파일
- 서블릿과 필터가 공유할 수 있는 루트 스프링 컨테이너 설정으로 공통 bean(Service, Repository(DAO),DB,Log 등)을 설정합니다.
- 공통 bean을 설정하는 곳으로 주로 view 지원을 제외한 bean을 설정합니다.
< bean id ="dataSource" >
<bean id="dataSource"
class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url"
value="jdbc:oracle:thin:@IP주소:1521:xe"></property>
<property name="username" value="username"></property>
<property name="password" value="password"></property>
</bean>
- 데이터베이스 연결을 위한 DataSource 를 설정합니다.
- 설정에서 사용된 클래스는 org.apache.commons.dbcp2.BasicDataSource로 Apache Commons DBCP (Database Connection Pooling) 라이브러리를 사용하여 데이터베이스 연결 풀을 관리 합니다.
< bean id ="sqlSessionFactory" >
- 데이터베이스와 연결을 맺고 끊어질 때까지의 라이프 사이클을 관리 해주는 sqlSession 객체를 생성합니다.
- MyBatis의 SqlSessionFactory를 설정합니다.
- SqlSessionFactory는 MyBatis에서 데이터 베이스와의 세션을 생성하는 데 사용됩니다.
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations"
value="classpath:/sqlmap/**/*_SQL.xml" />
<property name="configLocation"
value="/WEB-INF/mybatisAlias/mybatisAlias.xml" />
</bean>
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> :
- sqlSessionFactory라는 이름의 빈을 정의합니다.
- class="org.mybatis.spring.SqlSessionFactoryBean"는 bean의 클래스 타입을 지정합니다. SqlSessionFactoryBean은 MyBatis의 SqlSessionFactoryBean를 생성하는 Spring Bean 입니다.
- <property name="dataSource" ref="dataSource"></property>
- name="dataSource"는 bean에서 사용할 DataSource를 지정합니다.
- ref="dataSource"는 dataSource라는 이름의 빈을 참조합니다. 이 DataSource 빈은 앞서 정의한 데이터베이스 연결 정보를 포함합니다.
- <property name="mapperLocations" value="classpath:/sqlmap/**/*_SQL.xml" />
- name="mapperLocations"는 MyBatis 매퍼 파일의 위치를 설정합니다.
- value="classpath:/sqlmap/**/*_SQL.xml"는 클래스패스 내의 sqlmap폴더에서 _SQL.xml로 끝나는 모든 파일을 매퍼로 사용할 것임을 지정합니다.
- <property name="configLocation" value="/WEB-INF/mybatisAlias/mybatisAlias.xml" />
- name="configLocation"는 MyBatis 설정 파일의 위치를 지정합니다.
- value="/WEB-INF/mybatisAlias/mybatisAlias.xml" 는 mybatisAlias.xml 설정 파일이 /WEB-INF/mybatisAlias/ 경로에 위치한다고 지정합니다.
< bean id ="sqlSessionTemplate" >
<bean id="sqlSessionTemplate"
class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
- <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
- class="org.mybatis.spring.SqlSessionTemplate"는 bean의 클래스 타입을 지정합니다.
- SqlSessionTemplate은 MyBatis의 SqlSession을 구현하며, MyBatis의 데이터베이스 세션을 처리하는 데 사용됩니다.
- <constructor-arg index="0" ref="sqlSessionFactory" />
- constructor-arg는 빈의 생성자 인자를 설정합니다.
- index="0" 는 첫 번쨰 생성자 인자를 설정하는 것을 의미합니다.
- ref="sqlSessionFactory"는 sqlSessionFactory라는 이름의 빈을 참조합니다.
- 즉, SqlSessionTemplate의 생성자에 sqlSessionFactory 빈을 주입하여 SqlSessionTemplate이 SqlSessionFactory를 사용하돌고 합니다.
< bean id ="transactionManager" >
- 트랜잭션 관리자의 빈을 정의 합니다.
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven/>
- 어노테이션 기반의 트랜잭션 제어를 활성화합니다.
- @Transactional 어노테이션을 사용하여 트랜잭션을 자동으로 처리할 수 있게 합니다.
- 이 설정을 통해 @Transactional 어노테이션이 붙은 메서드가 트랜잭션을 시작하고 커밋하거나 롤백할 수 있도록 Spring이 자동으로 관리합니다.
<tx:annotation-driven/>
Mapper 인터페이스 설정
- 개발자가 직접 DAO를 설정하지 않아도 자동으로 Mapper 인터페이스를 활용하는 객체를 생성하게 됩니다.
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="kr.or.ddit.mapper" />
</bean>
- MapperScannerConfigurer는 MyBatis의 Mapper 인터페이스를 자동으로 스캔하여 MyBatis의 SQL세션에 등록하는 역할을 합니다. 이를 통해 매퍼 xml파일을 별도로 설정하지 않고, 인터페이스 기반으로 매퍼를 사용 할 수 있습니다.
- basePackage 속성은 MyBatis가 매퍼 인터페이스를 스캔할 패키지를 지정합니다.
- 이 경우, kr.or.ddit.mapper 패키지 아래에 있는 모든 Mapper 인터페이스를 스캔하여 MyBatis의 SQL 세션에 등록합니다.
스프링 AOP 활성화
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
- AspectJ 기반 AOP를 활성화합니다.
- 스프링 컨테이너가 @Aspect 어노테이션이 붙은 클래스를 인식하고, 이를 기반으로 AOP 기능을 적용합니다.
- 이 설정을 통해 @Aspect로 정의된 클래스를 자동으로 프록시로 만들어서, 횡단 관심사(예: 로깅, 트랜잭션 관리 등)를 애플리케이션의 특정 비즈니스 로직에 적용할 수 있습니다.
컴포넌트 스캔
<context:component-scan base-package="kr.or.ddit.aop"></context:component-scan>
- kr.or.ddit.aop 패키지를 스캔하여 해당 패키지 내의 컴포넌트(예: @Component, @Service, @Repository,@Controller 등)들을 스프링 컨테이너에 등록합니다.
- 스프링은 이 패키지 내의 클래스들을 자동으로 발견하고 빈으로 등록하여 의존성 주입을 가능하게 합니다.
'JAVA > 대덕인재대학교-최프' 카테고리의 다른 글
[Java]페이징 (제네릭) (0) | 2024.10.13 |
---|---|
봉사활동 카카오톡api (1) | 2024.10.10 |
환경설정 - servlet-context.xml : 스프링 웹(view) 설정 파일 (0) | 2024.09.23 |
환경설정 - web.xml : tomcat 서버의 설정 (1) | 2024.09.08 |
환경설정 - pom.xml (0) | 2024.09.08 |