ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 02. MyBatis properties 설정하기
    MyBatis 2021. 12. 1. 17:52
    반응형

     

    properties에 DB정보 등 보안이 유지되어야 하는 정보를 관리하기로 했습니다.

    현재는 아래와 같이 소스 상에 DB정보가 노출되었습니다.

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
      <typeAliases>
      	<typeAlias alias="userInfo" type="common.user.UserInfoVO"/>
      </typeAliases>
      <environments default="development">
        <environment id="development">
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://192.168.0.2:3306/study_db?useSSL=false&amp;serverTimezone=Asia/Seoul&amp;characterEncoding=UTF-8"/>
            <property name="username" value="userId"/>
            <property name="password" value="password"/>
          </dataSource>
        </environment>
      </environments>
      <mappers>
        <mapper resource="basicProject/mapper/userInfoMapper.xml"/>
        <mapper class="common.user.mybatis.UserMapper" />
      </mappers>
    </configuration>

     

    mybatis에서 제공하는 properties 설정을 적용하여 DB정보를 소스상에 노출되지 변경하였습니다.

    - mybatis 설정

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
      <properties resource="application.properties">
      	<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
      </properties>
      <typeAliases>
      	<typeAlias alias="userInfo" type="common.user.UserInfoVO"/>
      </typeAliases>
      <environments default="development">
        <environment id="development">
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
            <property name="driver" value="${driver}" />
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
          </dataSource>
        </environment>
      </environments>
      <mappers>
        <mapper resource="basicProject/mapper/userInfoMapper.xml"/>
        <mapper class="common.user.mybatis.UserMapper" />
      </mappers>
    </configuration>

     

    - properties 파일 (파일명 : application.properties)

    #Database Info
    
    url=jdbc:mysql://192.168.0.2:3306/study_db?useSSL=false&serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username=userId
    password=pwd

    - pakage 정보

     

    properies.resource에 내가 생성한 .properties 파일 경로 및 파일명을 적어줍니다.

    <properties resource="application.properties"> </properties>

    properties 내부에 property 설정을 통해 application.properties외에 추가적으로 property 정보를 추가할 수 있습니다.

    또한 property 정보는 java 에서 SqlSessionFactory 생성시 추가할 수 있습니다.

    Properties p1 = new Properties();
    p1.setProperty("driver", "driver=com.mysql.cj.jdbc.Driver2");
    			
    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, p1);

     

    만약 동일한 property가 한개 이상 존재한다면 mybatis는 아래와 같은 순서로 로드합니다.

    • properties 엘리먼트에 명시된 property를 가장 먼저 읽습니다.
    • properties 엘리먼트의 클래스패스 자원이나 url 속성으로 부터 로드된 property를 두번째로 읽습니다. 앞서 로드된 property 중 동일한 property가 있을경우 덮어습니다.
    • 마지막으로 메소드 파라미터로 전달된 property를 읽는다. 앞서 로드된 property 중 동일한 property가 있을경우 덮어습니다.

    그래서 가장 우선순위가 높은 property는 메소드의 파라미터로 전달된 property이고 그 다음은 자원 및 url 속성이고 마지막은 properties 엘리먼트에 명시된 property입니다.

     

     

    반응형

    'MyBatis' 카테고리의 다른 글

    03. MyBatis 로그 남기기(Log4j 2)  (0) 2021.12.07
    01. MyBatis 설정 (Mysql )  (0) 2021.11.30
    00. 마이바티스(Mybatis) 란?  (0) 2021.11.29

    댓글

Designed by Tistory.