본문 바로가기
[ Developer ]/MongoDB

[MongoDB] 몽고디비와 스프링 연동 Spring framework

by 김현섭. 2016. 6. 29.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Spring-Data-MongoDB 연동 설정
MongoDB를 Spring과 연동시키는 방법에 대해 알아본다
Spring Tool Suite를 이용하며 Dynamic Web Project를 생성해서 진행한다

@ Dependency 추가
우선 pom.xml에서 필요한 Dependencies를 추가해준다


*Dependency Source
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
    <dependencies>
        <!-- MongoDB Dependencies -->
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>1.9.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
cs

그런 후 src/main/java에서 mongo.test 패키지를 생성한다



@ web.xml
web.xml에서 springDispatcherServlet을 생성하고 기존 Spring 세팅과 동일하게 진행한다

또한 추가적으로 EncodingFilter를 추가해준다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    <!-- Encoding Filter -->
    <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>
    </filter>
 
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
cs


@ applicationContext.xml
이제 webap안에 WEB-INF 폴더 내에 spring 폴더를 생성하고 applicationContext.xml을 생성 후 기본적인 세팅을 한다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 
    <mvc:annotation-driven />
    
    <mvc:resources location="/WEB-INF/resources/" mapping="/resources" />
    
    <bean id="viewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    
</beans>
cs


@ MongoContext.xml
applicationContext와 동일 하게 생성을 하되 Name Space는 mongo를 추가해준다



그렇다면 위와 같이 mongo가 들어온 것을 확인할 수 있다 mongoDB를 세팅을 해주면 된다


@ Mongo Datasource
우선 mongo-client를 생성한다


그런 후 host와 port을 옵션으로 적어준 후 안에 client-options를 생성해서 옵션을 지정해준다


옵션은 필수는 아니지만 설정해주면 좋다


@ mongoTemplate 생성


bean을 생성해서 mongoTemplate를 생성한다
안에 생성자로 ref="mongo"는 위에서 설정한 dataSource를 의미 한다

*mongoContext.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
<?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:mongo="http://www.springframework.org/schema/data/mongo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.8.xsd">
 
    <mongo:mongo-client host="localhost" port="27017">
        <mongo:client-options
            connections-per-host="8"
            threads-allowed-to-block-for-connection-multiplier="4"
            connect-timeout="1000"
            max-wait-time="1500"    
            socket-keep-alive="true"
            socket-timeout="1500"        
        />
    </mongo:mongo-client>
    
    <bean id="mongoTemplate"
            class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg ref="mongo" />    
        <constructor-arg name="databaseName" value="memo" />    
    </bean>
    
</beans>
cs


@ mongoContext Test
작성 후 mongoContext가 잘 작동하는지에 대해 테스트를 해본다
이전에 생성한 패키지에 class를 생성한다


그런 후 mongoContext을 복사해서 src/main/resources에 임시로 복사한다


mongoContext를 가져오는 구문을 작성해준다


그리고 main에서 출력을 해본다


그리고 Run as를 통해서 Java Application으로 실행을 하면 아래와 같이 나오면 문제 없이 된 것이다


*MongoTest Class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MongoTest {
    
    private MongoTemplate mongoTemplate;
    
    public MongoTest() {
        
        String mongoContextPath = "/mongoContext.xml";
        
        AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(mongoContextPath);
        
        mongoTemplate = (MongoTemplate) ctx.getBean("mongoTemplate");
    }
    
    public static void main(String[] args) {
        MongoTest mongoTest = new MongoTest();
        
        System.out.println(mongoTest.mongoTemplate);
    }
}