설정 파일 - root-context.xml
- 모든 서블릿이 공유할 수 있는 공통 빈을 설정하는 파일
- 프로젝트의 어플리케이션 영역 설정
- 스프링 MVC 설정과 관련된 여러 처리를 담당
- View와 관련없는 빈을 설정 (예시 : 서비스, 레포지토리 등등)
- View와 밀접하지 않은 정보를 기술하는 xml 파일
- 외부 jar파일등으로 사용하는 클래스는 bean 태그를 이용해 작성
빈 설정
- bean
- 객체 정의 태그
- 속성
- id
- 해당 객체의 고유 id
- 예시 : dataSourceSpied
- class 해당 클래스명 예시 : org.springframework.jdbc.datasource.DriverManagerDataSource
- destroy-method
- 주어진 세션을 자동으로 close하라는 의미
- 예시 : close
- id
- property
- bean
- 태그 안에 작성하는 해당 객체의 속성을 설정하는 태그
- name
- 해당 속성의 이름
- 예시 : driverClassName
- value
- 해당 속성의 값
- 예시 : org.mariadb.jdbc.Driver
- ref
- 해당 빈이 참고하는 다른 빈의 id
- 예시 : dataSource & dataSourceSpied
- bean
- constructor-arg
- bean 태그 안에 작성하는 의존하는 객체를 생성자를 통해 주입받는 태그
- 속성
- ref
- 해당 빈이 참고하는 다른 빈의 id
- 예시 : dataSourceSpied
- ref
※ property 태그 안에서도 bean을 설정할 수 있다.
컴포넌트 스캔 설정
- root-context.xml의 beans 태그 안에 작성한다.
- context:component-scan
- 명시한 패키지에 있는 클래스들을 빈으로 등록하기 위한 태그
- 속성
- base-package
- 빈으로 등록하려고 하는 클래스가 포함된 패키지 경로
- 예시 : com.my.mapper
- base-package
- 기본 예시 코드
<context:component-scan base-package="com.my.mapper" />
- 필터링 기능이 적용된 예시 코드
<context:component-scan base-package="com.my">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
자주 쓰는 기능
- JDBC 연결 (mariaDB의 경우)
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.mariadb.jdbc.Driver" />
<property name="url" value="jdbc:mariadb://url주소/데이터베이스명" />
<property name="username" value="유저명" />
<property name="password" value="비밀번호" />
</bean>
- myBatis 사용
<bean id="SqlSessionFectory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/mybatis-config.xml" />
<property name="mapperLocations" value="classpath:/mappers/*Mapper.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
<constructor-arg name="sqlSessionFactory" ref="SqlSessionFectory" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.my.mapper" />
</bean>
- SQL log 사용 (DBMS의 유저정보를 정의하는 dataSource가 이미 정의되어있는 경우)
- DBMS의 유저정보를 정의하는 id가 dataSource인 빈의 id를 dataSourceSpied로 변경한다.
- 아래의 코드를 작성한다.
<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
<constructor-arg ref="dataSourceSpied" />
<property name="logFormatter">
<bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">
<property name="loggingType" value="MULTI_LINE" />
<property name="sqlPrefix" value="SQL : "/>
</bean>
<property>
</bean>