SpringMVC MongoDB整合中遇到的问题
集成环境:Spring4
+SpringMVC
+MongoDB
+MySQL
+MyBatis
+Druid
+FreeMarker
MongoDB包含用户认证部分,源码地址
Spring3 升级至 Spring4
出现错误如下:
严重: Servlet [SpringMVC] in web application [/storm] threw load() exception
java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonProcessingException
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
at java.lang.Class.getDeclaredMethods(Class.java:1855)
...
- 使用
Spring4
时需要使用jackson2.X
的,在maven
中的依赖为<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.5.1</version> <type>bundle</type> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.5.0</version> <type>bundle</type> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.0</version> <type>bundle</type> </dependency>
spring mvc
的配置如下
要使用<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> <!-- json转换器 --> <ref bean="mappingJacksonHttpMessageConverter" /> </list> </property> </bean>
Jackson2HttpMessageConverter
感谢java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonProcessingException
引入FreeMarker
需要引入spring-context-support-3.2.0.RC2.jar
MongoDB数据库中加入认证
方法一
SpringMVC Mongodb 配置中加入用户认证信息,该方法适用于认证库和连接库相同的情况,并不适用于不同的情况。
首先声明一个用户信息bean
<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="${mongo.uname}" />
<constructor-arg name="password" value="${mongo.upass}" />
</bean>
修改mongoTemplate的配置,多加入一个构造函数参数
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg name="databaseName" value="${mongo.dbName}" />
<constructor-arg ref="userCredentials" />
</bean>
方法二
MongoDB数据库中加入认证,并且认证的库和需要连接的库不是同一个。
使用较高版本的spring-data-mongodb
,否则容易出现找不到authentication-dbname
属性的错误,这个属性就是进行认证的库,区别于需连接使用的库dbname
,这里使用的版本是1.10.6.RELEASE
:
<mongo:db-factory id="mongoDbFactory" dbname="${mongo.dbname}" mongo-ref="mongo" username="${mongo.uname}"
password="${mongo.upass}" authentication-dbname="${mongo.authdbname}"/>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
配置druid监控spring jdbc
下方配置包名时,切记不能配置为com.*
,具体原因未知。
<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"></bean>
<bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
<property name="patterns">
<list>
<value>com.mongospringmysql.*</value>
</list>
</property>
</bean>
<aop:config>
<aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
</aop:config>
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com
文章标题:SpringMVC MongoDB整合中遇到的问题
文章字数:821
本文作者:Bin
发布时间:2017-08-05, 07:54:05
最后更新:2019-08-06, 00:57:11
原始链接:http://coolview.github.io/2017/08/05/Spring/SpringMVC-MongoDB%E6%95%B4%E5%90%88%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。