반응형

이전에 말했듯이 선행으로 하고있던 프로젝트 부터 시작하기때문에


기본적인 부분들은 전부 건너뛰고 


130페이지의 6.5 스프링에 빈으로 등록하기 부분을 학습할 예정이다


지난번의 내용은 Mysql 에서 테이블을 등록하고


Mybatis 테스트 코드 작성을 통해 디비 연동 부분을 테스트 해봤다



그부분에서 @Inject 를 사용한 부분이 계속 에러가 나서 골치가 아팠는데


그부분은 


root-context.xml 의


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



이부분을 작성하지 않아서 생긴 오류 였다 참고 바란다


그렇게 해서 작성된 root-context.xml 부분은 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
    xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema
          /jdbc/spring-jdbc-4.3.xsd     
        http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/
        spring-context-4.3.xsd     
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
    <!-- Root Context: defines shared resources visible to all other web components -->
    
    <bean id="dataSource" name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
        <property name="url" value="jdbc:log4jdbc:mysql://127.0.0.1:3306/book_ex?useSSL=false&amp;
        characterEncoding=UTF-8&amp;serverTimezone=UTC"    ></property>
        <property name="username" value="root"></property>
        <property name="password" value="1234"></property>                  
    </bean>
    
    <!-- 
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="false">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:/mybatis-config.xml"></property>
    </bean> 
    -->
    
 
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="false">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:/mybatis-config.xml"></property>
        <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>
    </bean>
    
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>    
    </bean>
    
    
    <context:component-scan base-package="com.common.persistance"></context:component-scan>
    
</beans>
 
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>    
 </bean>
cs



이렇게 변경이 되었다


MemberDAOTest 를 작성했다 junit으로 테스트 하기위함으로 src/test/java 하위 경로에 작성해야한다



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package org.common.web;
 
import javax.inject.Inject;
 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
import com.common.domain.MemberVO;
import com.common.persistance.MemberDAO;
 
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/**/root-context.xml"})
public class MemberDAOTest {
    
    @Inject
    private MemberDAO dao;
    
    @Test
    public void testTime() throws Exception{
        System.out.println(dao.getTime());
    }
    
    @Test
    public void testInsertMember() throws Exception{
        
        MemberVO vo = new MemberVO();
        vo.setUserid("user00");
        vo.setUserpw("user00");
        vo.setUsername("USER00");
        vo.setEmail("user00@aaa.com");
        
        dao.insertMember(vo);
    }
    
}
 
cs


그다음은 디비 로그 출력을 위해 로그 파일을 추가하는 부분이다


pom.xml 에 해당 내용을 추가해야 한다


1
2
3
4
5
6
        <!-- log4j -->
        <dependency>
            <groupId>org.bgee.log4jdbc-log4j2</groupId>
            <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
            <version>1.16</version>
        </dependency>
cs



root-context.xml 부분도 바꿔준다


1
2
3
4
5
6
7
    <bean id="dataSource" name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
        <property name="url" value="jdbc:log4jdbc:mysql://127.0.0.1:3306/book_ex?useSSL=false&amp;
        characterEncoding=UTF-8&amp;serverTimezone=UTC"    ></property>
        <property name="username" value="root"></property>
        <property name="password" value="1234"></property>                  
    </bean>
cs



이후에 

/src/main/resources

폴더에 파일 두개를 추가해서 설정을 추가해 주면된다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
log4jdbc.log4j2.properties
    log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
 
 
logback.xml
    
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml"/>
        <logger name="jdbc.sqlonly" level="DEBUG">
            <logger name="jdbc.sqltiming" level="INFO"/>
            <logger name="jdbc.audit" level="WARN"/>
            <logger name="jdbc.resultset" level="ERROR"/>
            <logger name="jdbc.resultsettable" level="ERROR"/>
            <logger name="jdbc.connection" level="INFO"/>
        </logger>
    </configuration>
cs




이렇게 해서 2부를 마친다

반응형

+ Recent posts