ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•
root-context.xml

์•ž์—์„œ root-context.xml ํŒŒ์ผ์˜ ์ด๋ฆ„์„ mvc-config.xml๋กœ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.

mvc์„ค์ •๊ณผ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์„ค์ • ํŒŒ์ผ๋กœ DAO, VO ๊ทธ๋ฆฌ๊ณ  service ๋“ฑ๊ณผ ๊ฐ™์€ ํŒŒ์ผ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ๊ฐ€ ๋นˆ(๊ฐ์ฒด)๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฌธ์„œ์ด๋‹ค.

๋‹ค์šด ๋ฐ›์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์ด๊ณ  ํ•„์š”ํ•  ๋•Œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ด ๋ฌธ์„œ์— beanํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ๋นˆ์„ ๋“ฑ๋กํ•˜๊ณ  ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

 

mvc-config.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
        http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
        http://www.springframework.org/schema/beans https://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/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
    <!-- 
        root-context.xml : mvc ์„ค์ •๊ณผ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์„ค์ • ํŒŒ์ผ (ex: DAO, VO, service...) 
        xml์˜ ํ˜•ํƒœ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ๊ฐ€ ๋นˆ(๊ฐ์ฒด)๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฌธ์„œ(xml)์ด๋‹ค.
        ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ฃผ์ž…ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ณณ์— ๋นˆ์„ ๋“ฑ๋กํ•ด๋‘”๋‹ค. 
(beanํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋“ฑ๋กํ•œ๋‹ค. id="๋นˆ์˜ ์ด๋ฆ„" class="ํด๋ž˜์Šค์˜ ์œ„์น˜")
        ๋‹ค์šด๋ฐ›์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ
    -->
    
    <!-- properties ํŒŒ์ผ ๋กœ๋”ฉํ•˜๊ธฐ -->
    <context:property-placeholder location="classpath:/database/jdbc.properties"/>
    
    
    <!-- [DB ๊ด€๋ จ ์„ค์ • : DB ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ปค๋„ฅ์…˜ ํ’€ ๊ฐ์ฒด์— ๋‹ด๋Š” ์„ค์ •] -->
    <!-- 1. HikariConfig ๋นˆ ๋“ฑ๋ก -->
    <bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
        <!-- ๋ณ€์ˆ˜ ์„ค์ • : property ํƒœ๊ทธ ์‚ฌ์šฉ, name="๋ณ€์ˆ˜ ์ด๋ฆ„" value="์ €์žฅ ๊ฐ’" -->
        <!-- ๋ณด์•ˆ์„ ์œ„ํ•ด ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  properties๋ฅผ elํƒœ๊ทธ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค. -->
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        
        <!-- ์ถ”๊ฐ€ ์†์„ฑ -->
        <property name="maximumPoolSize" value="30"/>
    </bean>
    
    <!-- 2. DataSource ๋“ฑ๋ก : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๋ณด๋“ค์„ ํฌ์žฅํ•˜๊ณ ์žˆ๋Š” ์• ๋“ค -->
    <bean id="ds" class="com.zaxxer.hikari.HikariDataSource">
        <!-- ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•œ ์˜์กด์„ฑ ์ฃผ์ž… -->
        <constructor-arg ref="hikariConfig"/>
    </bean>
    
    
    
    
    
    <!-- [๋งˆ์ด๋ฐ”ํ‹ฐ์Šค ์ฃผ์š” ๊ฐ์ฒด  sessionFactoryํด๋ž˜์Šค ๋นˆ๋“ฑ๋ก] -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- setter๋ฅผ ํ†ตํ•œ ์˜์กด์„ฑ ์ฃผ์ž… -->
        <property name="dataSource" ref="ds"/>
        <!-- ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค ์„ค์ • ํŒŒ์ผ์„ ๋ณ€์ˆ˜ configLocation์— ์ €์žฅ -->
        <property name="configLocation" value="classpath:/spring/mybatis-config.xml"/>
        <!-- sql๋ฌธ์ด ์ž‘์„ฑ๋  xmlํŒŒ์ผ์ด ๋“ค์–ด๊ฐ„ ๊ฒฝ๋กœ ์ €์žฅ -->
        <property name="mapperLocations" value="classpath:/mappers/**/*Mapper.xml"></property>
    </bean>
    
 
 
 
 
    
    <!-- [๋งˆ์ด๋ฐ”ํ‹ฐ์Šค๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค ๋นˆ ๋“ฑ๋ก] -->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg ref="sqlSessionFactory"/>
    </bean>
 
 
    <!-- [Mapper.xml ํŒŒ์ผ์„ ๋นˆ๊ฐ์ฒด๋กœ ๋“ฑ๋กํ•˜๋Š” ์„ค์ •] -->
    <mybatis-spring:scan base-package="com.spring.myapp.board.repository"/>
 
 
    
    <!-- [์ปดํฌ๋„ŒํŠธ ์ž๋™ ์Šค์บ” ๋ช…๋ น] -->
    <!-- ์ž๋™์ฃผ์ž… ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์œ„์น˜๋ฅผ ์•Œ๋ ค์ค˜์•ผํ•œ๋‹ค. -->
    <context:component-scan base-package="com.spring.myapp"/>
    
        
</beans>
 
 
๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜์กด์„ฑ ์ฃผ์ž… ๊ด€๊ณ„๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ณ  ์žˆ๋‹ค.

๊ฐ์ฒด๊ฐ’์„ ๋„ฃ์„ ๋–„์—๋Š” ref ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ธฐ๋ณธ ํƒ€์ž…์„ ๋„ฃ์„ ๋•Œ๋Š” value์†์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค.

jdbc.properties ํŒŒ์ผ๊ณผ mybatis-config.xmlํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

 

 

jdbc.properties ์†Œ์Šค์ฝ”๋“œ
1
2
3
4
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring?useSSL=false&serverTimezone=Asia/Seoul
jdbc.username=spring
jdbc.password=spring
 

 

mybatis-config.xml ์†Œ์Šค์ฝ”๋“œ
1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
 
<!-- mybatis-config.xml : ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค ์„ค์ • ํŒŒ์ผ๋กœ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค. ๋ผ๊ณ  ์„ ์–ธ ๋ฌธ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ, ์™ธ์šฐ๋Š”๊ฑฐ ์•„๋‹˜ -->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>
 

 

๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€