-
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&serverTimezone=Asia/Seoul&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