๐ŸŒ WEB/SETTING

Spring Setting ํ•˜๊ธฐ

์• ์ •์“ฐ 2020. 6. 3. 15:19

Window - Eclipse Marketplace - sts ๊ฒ€์ƒ‰

 

์ œ์ผ ์œ„์—์žˆ๋Š”๊ฑธ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด Spring ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์˜ค๋ฅธ์ชฝ ํด๋ฆญ - properties - Project Facets 

์ ์šฉํ•ด์ฃผ์‹œ๊ณ , pon.xml ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

์ฒดํฌํ•œ ๋ถ€๋ถ„ ๋ณ€๊ฒฝ ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝํ›„

์Šคํฌ๋กค ๋ฐ‘์œผ๋กœ ์ญ‰ ๋‚ด๋ ค์„œ plugin๋„ ๋ฐ”๊ฟ”์ค„๊ฒŒ์š”~

 

์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ์ €์žฅํ•˜๋ฉด ๋ฉ”์ด๋ธ์ด ์—ด์‹ฌํžˆ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

 

 

์ด์ œ ๋งˆ๋ฐ”ํ‹ฐ์Šค, ์Šคํ”„๋ง ์—ฐ๊ฒฐ ๊ด€๋ จ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค์ •ํ•ด ์ค„๊ฒŒ์š”.

์ผ๋‹จ, ์ €๋Š” spring ์„ค์ •ํŒŒ์ผ์„ ํ•œ ๋ฒˆ์— ๋ณด๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— web.xml ์—์„œ

์ด ๋ถ€๋ถ„์„ ํด๋”์— ๋„ฃ์–ด ์ฃผ์—ˆ์–ด์š” ๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๊ฐ™์ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๊ทธ๋ฆฌ๊ณ  ์ค‘์š”ํ•œ๊ฒƒ์€ filter๋ฅผ ์ด์šฉํ•ด์„œ ์ธ์ฝ”๋”ฉ์„ ํ•ด์ค๋‹ˆ๋‹ค.

web.xml์— ์ž‘์„ฑํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
cs

 

์ด์ œ pom.xml์—์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ• ๊ฒŒ์š”!

MyBatis ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค๋‹ˆ๋‹ค. ๊ณตํ†ต์ ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

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
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- Spring-orm -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- Mybatis-Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- ojdbc6.jar -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
cs

์‚ฌ์šฉํ•˜๋Š” DB์— ๋”ฐ๋ผ ์ถ”๊ฐ€๋˜๋Š” ํผ์ด ํ•˜๋‚˜ ๋” ์žˆ๋Š”๋ฐ 

ojbc์˜ ๊ฒฝ์šฐ Maven์—์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ค์ •ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

Oracle์„ ์‚ฌ์šฉํ•ด๋ณผ๊ฒŒ์š”!

 

roepositories๋Š” properties ๋ฐ”๋กœ ๋ฐ‘์— ์ž‘์„ฑํ•ด์ฃผ์…”์•ผ ๋ผ์š” ๊ทธ๋ž˜์•ผ ๋ฐ‘์— ์žˆ๋Š” ojdbc๋ฅผ

Maven์ด ๋‹ค์šด๋กœ๋“œ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์–ด์š”!

1
2
3
4
5
6
    <repositories>
        <repository>
            <id>codelds</id>
            <url>http://code.lds.org/nexus/content/groups/main-repo</url>
        </repository>
    </repositories>
cs

 

 

DB์ •๋ณด ์„ ์–ธํ•ด์ฃผ๋Š” properties๋ฅผ ๋งŒ๋“ค์–ด ์ค„๊ฒŒ์š”.

 

src - main - resources์— ์˜ค๋ฅธ์ชฝ ํด๋ฆญ - File

์ด๋ฆ„์€ db.properties๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1
2
3
4
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:XE
user=
pw=
cs

์œ ์ € ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” Oracle ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ์จ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  DB์™€ Mybatis๋ฅผ ์—ฐ๊ฒฐํ•ด์ค„ ์„ค์ • ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

src - main- webapp - WEB-INF์— sqlsํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๊ทธ ์•ˆ์— Configuration.xml์„ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

์ดํด๋ฆฝ์Šค ๋งˆ์ผ“์—์„œ Mybatis๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค๋ฉด Mapper๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. (๊ทธ ์ „์—๋Š” DTD๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ๋ฐ”๋€ ๊ฑฐ ๊ฐ™๋‹ค)

์ฒ˜์Œ๋ณธ๋‹ค. ์‹ ๊ธฐํ•˜๋‹ค...

ํ•˜์ง€๋งŒ, ์ด๊ฑด mapper๊ณ , ์ œ์ผ ๋จผ์ € ๋งŒ๋“ค ๊ฒƒ์€ Configuration์ด๊ธฐ ๋•Œ๋ฌธ์—

mapper๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š” ๋ถ€๋ถ„์„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค!

mapper ์ž‘์„ฑ๋˜์–ด์žˆ๋˜ ๋ถ€๋ถ„ ๋ณ€๊ฒฝ

 

์ง€๊ธˆ๊นŒ์ง€ ๋งŒ๋“  ํŒŒ์ผ๋“ค์„ ์„ค์ •ํ•ด์ค„ ๊ฒ๋‹ˆ๋‹ค. 

 

์šฐ์„  spring ํด๋”์— ์žˆ๋Š” root-context๋ฅผ ๋ณ€๊ฒฝํ•ด์ค„ ๊ฒ๋‹ˆ๋‹ค. 

 

root์™€ servlet์˜ ์ฐจ์ด๋Š” 

root๋Š” ๊ณตํ†ต ๋นˆ์„ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ณณ์œผ๋กœ view๋‚˜ vean์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. db, log ๋“ฑ๋“ฑ

servlet์€ Dispatcher์„œ๋ธ”๋ฆฟ๊ณผ ๊ด€๋ จ๋œ ์„ค์ •์„ ํ•˜๋Š” ๊ณณ์ด๋‹ค. 

 

appServlet์— ํ•œ ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— web.xml์—์„œ ๊ฒฝ๋กœ๋ฅผ ๋ฐ”๊ฟ”์คฌ์Šต๋‹ˆ๋‹ค.

์ €๋Š” root๋ณด๋‹ค applicationContext๊ฐ€ ์ต์ˆ™ํ•ด์„œ ํŒŒ์ผ๋ช…๋„ ๋ฐ”๊ฟ”์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

ํŒŒ์ผ ์•ˆ์— ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š”๋ฐ

OJDBC6, MyBatis3.x, Srping-orm, mybatis-Spring, Commoms-dbcp ์„ค์ •ํ•ด์ค„๊ฒŒ์š”

 

๊ทธ์ „์— ๋ฐฉ๊ธˆ ์ „ ๋งŒ๋“  db.properties๋ฅผ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค.

์ž๋™์™„์„ฑ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— class ์ ๊ณ  Property๋จผ์ € ์“ฐ์‹œ๊ณ  ์ž๋™์™„์„ฑํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ชฉ๋ก์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

PropertyPlaceholderConfigurerํด๋ž˜์Šค๋ฅผ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๋ฉด ์™ธ๋ถ€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
<bean
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:db.properties</value>
            </list>
        </property>
    </bean>
cs

                                                             

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${user}" />
        <property name="password" value="${pw}" />
    </bean>
    
    <bean class="org.mybatis.spring.SqlSessionFactoryBean"
        id="sqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation"
            value="/WEB-INF/sqls/Configuration.xml"></property>
    </bean>
    
    <bean class="org.mybatis.spring.SqlSessionTemplate"
        id="sqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactoryBean"></constructor-arg>
    </bean>
    
    <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        id="dataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
cs

1. BasicDataSource 

DB์™€ ์—ฐ๊ฒฐํ•ด์ค„ ๋“œ๋ผ์ด๋ธŒ, url, ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ์—ฐ๊ฒฐํ•ด์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์œ„์—์„œ ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ์—์„œ ๊ฐ€์ง€๊ณ  ์˜จ

db.properties์—์„œ elํ‘œํ˜„์‹์œผ๋กœ ๋งตํ•‘์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

๋งŒ์•ฝ ์—ฐ๊ฒฐ์ด ์ˆ˜์ •๋˜์—ˆ์„ ๋•Œ db.properties์—์„œ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

2.SqlSessionFactoryBean

Mybatis์™€ DB๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ค๋‹ˆ๋‹ค. ์‹ค์งˆ์ ์œผ๋กœ SqlSessionFactory๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ์ด ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

DB์™€ ์—ฐ๊ฒฐํ•ด์ค„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— property๋กœ dataSource๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

3.SqlSessionTemplate

SqlSeesion์„ ๊ตฌํ˜„ํ•˜๊ณ  ๊ทธ ์ฝ”๋“œ์—์„œ ๋Œ€์ฒดํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜๊ธฐ ๋•Œ๋ฌธ์— DAO๋‚˜ ๋งคํผ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(Configuration์—์„œ ์ž‘์„ฑํ•  ๋งคํผ๋“ค)

 

4.DataSourceTransactionManager

Mybatis๊ฐ€ ์Šคํ”„๋ง ํŠธ๋žœ์žญ์…˜์— ์—ฐ๋™ํ•œ๋‹ค.

์ด๋•ŒsqlSessionFactoryBean์„ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ๋œ ๊ฒƒ๊ณผ ๋ฐ˜๋“œ์‹œ ๋™์ผํ•œ ๊ฒƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

์ด์ œ Configuration์— ์ž‘์„ฑํ•  mappers์„ ๋งŒ๋“ค์–ด ์ค„๊ฒŒ์š”!

src - main - resources์— sqlsํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  xmlํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

๋„ค์ž„์ŠคํŽ˜์ด์Šค ์„ค์ •ํ•ด์ฃผ๊ณ , ์ฟผ๋ฆฌ ์ž‘์„ฑํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด mapper๋ฅผ bean์ด DB์™€ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•ด Configuration.xml ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด๊ณณ์—์„œ Aliases๋ฅผ ์ •ํ•ด์ค„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Configuration.xml
mapperํŒŒ์ผ์ธ text.xml

 

์—ฌ๊ธฐ๊นŒ์ง€ ๊ธฐ๋ณธ Spring ๊ธฐ๋ณธ ์…‹ํŒ…์ž…๋‹ˆ๋‹ค.

์„ค๋ช…์ด ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด๋‚˜ ํ‹€๋ฆฐ ๋ถ€๋ถ„์€ ์กฐ๊ธˆ์”ฉ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๋ฐ˜์‘ํ˜•