spring mongo有多个实例new mongosynchronization

博客分类:
第4章 MongoDB整合Spring
(黎明你好原创作品,转载请注明)
4.1 创建maven项目
4.1.1 repositories
创建maven项目,其中repositories使用spring的maven库:
&repositories&
&repository&
&id&central&/id&
&name&Maven Central&/name&
&url&http://repo1.maven.org/maven2/&/url&
&/repository&
&repository&
&id&spring-release&/id&
&name&Spring Maven Release Repository&/name&
&url&http://repo.springsource.org/libs-release&/url&
&/repository&
&repository&
&id&atlassian-m2-repository&/id&
&url&/repository/public&/url&
&/repository&
&/repositories&
4.1.2 Dependencies
使用到的jar包:
&dependencies&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&servlet-api&/artifactId&
&version&2.5&/version&
&type&jar&/type&
&scope&provided&/scope&
&/dependency&
&dependency&
&groupId&org.slf4j&/groupId&
&artifactId&slf4j-api&/artifactId&
&version&1.6.1&/version&
&type&jar&/type&
&scope&compile&/scope&
&/dependency&
&dependency&
&groupId&org.slf4j&/groupId&
&artifactId&slf4j-log4j12&/artifactId&
&version&1.7.5&/version&
&type&jar&/type&
&scope&runtime&/scope&
&/dependency&
&dependency&
&groupId&org.mongodb&/groupId&
&artifactId&mongo-java-driver&/artifactId&
&version&2.10.1&/version&
&type&jar&/type&
&scope&compile&/scope&
&/dependency&
&dependency&
&groupId&org.springframework.data&/groupId&
&artifactId&spring-data-mongodb&/artifactId&
&version&1.2.1.RELEASE&/version&
&type&jar&/type&
&scope&compile&/scope&
&/dependency&
&dependency&
&groupId&org.springframework.data&/groupId&
&artifactId&spring-data-mongodb-cross-store&/artifactId&
&version&1.2.1.RELEASE&/version&
&type&jar&/type&
&scope&compile&/scope&
&/dependency&
&dependency&
&groupId&org.springframework.data&/groupId&
&artifactId&spring-data-mongodb-log4j&/artifactId&
&version&1.2.1.RELEASE&/version&
&type&jar&/type&
&scope&compile&/scope&
&/dependency&
&/dependencies&
4.2 添加spring配置文件
spring的配置文件applicationContext.xml
&?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:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"&
&context:component-scan base-package="liming.mongodb.example" /&
&mongo:mongo host="127.0.0.1" port="27017" /&
&!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 --&
&mongo:db-factory dbname="student" mongo-ref="mongo" /&
&!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 --&
&bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"&
&constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /&
&!-- 映射转换器,扫描back-package目录下的文件,根据注释,把它们作为mongodb的一个collection的映射 --&
&mongo:mapping-converter base-package="climing.mongodb.example.data.model" /&
&!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 --&
&mongo:repositories base-package="liming.mongodb.example.data.impl" /&
&context:annotation-config /&
4.3 增删改查
Userl实现的增删改查:
4.3.1UserEntity
package liming.mongodb.example.data.
import java.util.D
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.D
@Document(collection = "user")
public class UserEntity {
private NameE
private String regionN
private String[]
public String getId() {
public void setId(String id) {
public NameEntity getName() {
public void setName(NameEntity name) {
this.name =
public int getAge() {
public void setAge(int age) {
this.age =
public int getWorks() {
public void setWorks(int works) {
this.works =
public Date getBirth() {
public void setBirth(Date birth) {
this.birth =
public String getPassword() {
public void setPassword(String password) {
this.password =
public String getRegionName() {
return regionN
public void setRegionName(String regionName) {
this.regionName = regionN
public String[] getSpecial() {
public void setSpecial(String[] special) {
this.special =
4.3.2 NameEntity
package liming.mongodb.example.data.
public class NameEntity {
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getNickname() {
public void setNickname(String nickname) {
this.nickname =
4.3.3 UserDao
package liming.mongodb.example.
import java.util.L
import liming.mongodb.example.data.model.UserE
import org.springframework.transaction.annotation.T
@Transactional
public interface UserDao {
public abstract void _test();
public abstract void createCollection();
public abstract List&UserEntity& findList(int skip, int limit);
public abstract List&UserEntity& findListByAge(int age);
public abstract UserEntity findOne(String id);
public abstract UserEntity findOneByUsername(String username);
public abstract void insert(UserEntity entity);
public abstract void update(UserEntity entity);
4.3.4 UserDaoImpl
package liming.mongodb.example.data.
import java.util.L
import java.util.S
import liming.mongodb.example.data.UserD
import liming.mongodb.example.data.model.UserE
import org.slf4j.L
import org.slf4j.LoggerF
import org.springframework.beans.factory.annotation.A
import org.springframework.data.domain.S
import org.springframework.data.domain.Sort.D
import org.springframework.data.domain.Sort.O
import org.springframework.data.mongodb.core.MongoT
import org.springframework.data.mongodb.core.query.C
import org.springframework.data.mongodb.core.query.Q
import org.springframework.data.mongodb.core.query.U
import org.springframework.stereotype.R
import com.mongodb.DB;
@Repository
public class UserDaoImpl implements UserDao {
public static final Logger logger = LoggerFactory.getLogger(UserDaoImpl.class);
@Autowired
private MongoTemplate mongoT
public void _test() {
Set&String& colls = this.mongoTemplate.getCollectionNames();
for (String coll : colls) {
("CollectionName=" + coll);
DB db = this.mongoTemplate.getDb();
("db=" + db.toString());
public void createCollection() {
if (!this.mongoTemplate.collectionExists(UserEntity.class)) {
this.mongoTemplate.createCollection(UserEntity.class);
public List&UserEntity& findList(int skip, int limit) {
Query query = new Query();
query.with(new Sort(new Order(Direction.ASC, "_id")));
query.skip(skip).limit(limit);
return this.mongoTemplate.find(query, UserEntity.class);
public List&UserEntity& findListByAge(int age) {
Query query = new Query();
query.addCriteria(new Criteria("age").is(age));
return this.mongoTemplate.find(query, UserEntity.class);
public UserEntity findOne(String id) {
Query query = new Query();
query.addCriteria(new Criteria("_id").is(id));
return this.mongoTemplate.findOne(query, UserEntity.class);
public UserEntity findOneByUsername(String username) {
Query query = new Query();
query.addCriteria(new Criteria("name.username").is(username));
return this.mongoTemplate.findOne(query, UserEntity.class);
public void insert(UserEntity entity) {
this.mongoTemplate.insert(entity);
public void update(UserEntity entity) {
Query query = new Query();
query.addCriteria(new Criteria("_id").is(entity.getId()));
Update update = new Update();
update.set("age", entity.getAge());
update.set("password", entity.getPassword());
update.set("regionName", entity.getRegionName());
update.set("special", entity.getSpecial());
update.set("works", entity.getWorks());
update.set("name", entity.getName());
this.mongoTemplate.updateFirst(query, update, UserEntity.class);
4.3.5 测试代码
package liming.mongodb.
import java.util.A
import java.util.D
import java.util.L
import liming.mongodb.example.data.UserD
import liming.mongodb.example.data.impl.UserDaoI
import liming.mongodb.example.data.model.UserE
import org.springframework.context.ConfigurableApplicationC
import org.springframework.context.support.ClassPathXmlApplicationC
public class ApplicationSpring {
public static void main(String[] args) {
System.out.println("Bootstrapping HelloMongo");
ConfigurableApplicationContext context =
context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = context.getBean(UserDaoImpl.class);
userDao._test();
UserEntity entity1 = new UserEntity();
entity1.setId("5");
entity1.setAge(1);
entity1.setBirth(new Date());
entity1.setPassword("asdfasdf");
entity1.setRegionName("北京");
entity1.setWorks(1);
userDao.insert(entity1);
userDao.update(entity1);
userDao.createCollection();
List&UserEntity& list = userDao.findList(0, 10);
for (UserEntity e : list) {
System.out.println("all - id=" + e.getId() + ", age=" + e.getAge() + ", password=" + e.getPassword() + ", regionName=" + e.getRegionName() + ", special=" + Arrays.toString(e.getSpecial())
+ ", name=" + e.getName().getUsername() + "-" + e.getName().getNickname() + ", birth=" + e.getBirth());
list = userDao.findListByAge(1);
for (UserEntity e : list) {
System.out.println("age=1 - id=" + e.getId() + ", age=" + e.getAge() + ", password=" + e.getPassword() + ", regionName=" + e.getRegionName() + ", special="
+ Arrays.toString(e.getSpecial()) + ", name=" + e.getName().getUsername() + "-" + e.getName().getNickname() + ", birth=" + e.getBirth());
UserEntity e = userDao.findOne("1");
System.out.println("id=1 - id=" + e.getId() + ", age=" + e.getAge() + ", password=" + e.getPassword() + ", regionName=" + e.getRegionName() + ", special=" + Arrays.toString(e.getSpecial())
+ ", name=" + e.getName().getUsername() + "-" + e.getName().getNickname() + ", birth=" + e.getBirth());
e = userDao.findOneByUsername("limingnihao");
System.out.println("username=limingnihao - id=" + e.getId() + ", age=" + e.getAge() + ", password=" + e.getPassword() + ", regionName=" + e.getRegionName() + ", special="
+ Arrays.toString(e.getSpecial()) + ", name=" + e.getName().getUsername() + "-" + e.getName().getNickname() + ", birth=" + e.getBirth());
System.out.println("DONE!");
浏览 51580
applicationContext.xml里面 这个地方&mongo:mongo host="127.0.0.1" port="27017"&&/mongo:mongo&报错:Error occured processing XML 'org/springframework/data/mongodb/core/MongoFactoryBean'. See Error Log for more details是什么情况解决了 缺spring-tx包
limingnihao
浏览: 1553545 次
来自: 北京
好详细,写的真全面
哪里有源代码啊,?能否发一份?还有就是 ClassEntity ...
classentity是啥?哪个包的类啊?这教程并不完整啊!
shift+alt+a
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
spring 就是NB,很快找到spring配置mongodb的解决方案:spring-data
本文如题,让我们轻松通过spring来管理mongodb的各种操作。
该文章主要参考spring的官方实例文档:spring-data-mongodb-hello-world-example:
想看原著的同学可以借鉴哈,写的相当不错!
我们可以通过Spring Data for MongoDB 框架的两种方式来配置mongodb: XML配置文件 and 注解(annotation)来进行CRUD 操作
使用工具:
Spring Data MongoDB – 1.0.0.M2
Spring Core – 3.0.5.RELEASE
Java Mongo Driver – 2.5.2
Eclipse – 3.5
JDK – 1.6
该项目源码是spring官方提供的,可通过maven来构建项目,使用起来非常方便!哥们的附件里会提供源码供大家下载。
不过现在maven还没有引入mongodb相关的jar文件,所以请在自行下载并引入项目,附件里我也会给大家提供。
如果你已经把源码准备好了,现在我们继续:
一,通过spring有两种方式引入mongodb:
1.通过注解(Annotation):
文件:SpringMongoConfig.java
package com.mkyong.
import org.springframework.context.annotation.B
import org.springframework.context.annotation.C
import org.springframework.data.document.mongodb.MongoT
import org.springframework.data.document.mongodb.config.AbstractMongoC
import com.mongodb.M
* Spring MongoDB configuration file
@Configuration
public class SpringMongoConfig extends AbstractMongoConfiguration {
public @Bean Mongo mongo() throws Exception {
return new Mongo("localhost");
public @Bean MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongo(),"yourdb","yourCollection");
慢慢发现通过注解配置这些还是很方便的,不常改的配置直接写类里而不麻烦xml配置文件不是很爽?
使用的时候也非常方便:
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");
相信大家都能看懂。
到这点你应该能发现MongoOperations 是主要干事的了
2.通过xml配置文件
&?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:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"&
&!-- Default bean name is 'mongo' --&
&mongo:mongo host="localhost" port="27017" /&
&bean id="mongoTemplate"
class="org.springframework.data.document.mongodb.MongoTemplate"&
&constructor-arg ref="mongo" /&
&constructor-arg name="databaseName" value="yourdb" /&
&constructor-arg name="defaultCollectionName" value="yourCollection" /&
&!-- To translate any MongoExceptions thrown in @Repository annotated classes --&
&context:annotation-config /&
标准的spring环境配置。
ApplicationContext ctx = new GenericXmlApplicationContext("mongo-config.xml");
二。使用模型:
package com.mkyong.
public class User {
//getter and setter methods
不需要任何注解的!
三。CRUD操作:
Full example to show you how to use Spring data to perform CRUD operations in mongoDB. The “user” object is saved into a collection named “userprofile“, under “yourdb” database.
这个实例给大家展示了spring data通过mongoDB进行的CRUD 操作。"user"对象被操作在“userprofile“集合(可理解为表)中,“yourdb”数据库下。
package com.mkyong.
import java.util.L
import org.springframework.context.ApplicationC
import org.springframework.context.annotation.AnnotationConfigApplicationC
import org.springframework.context.support.GenericXmlApplicationC
import org.springframework.data.document.mongodb.MongoO
import org.springframework.data.document.mongodb.query.C
import org.springframework.data.document.mongodb.query.Q
import org.springframework.data.document.mongodb.query.U
import com.mkyong.config.SpringMongoC
import com.mkyong.user.U
public class App
public static void main( String[] args )
//For Annotation
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
//ApplicationContext ctx = new GenericXmlApplicationContext("mongo-config.xml");
MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");
User user = new User("1001", "yong", "mook kim", 30);
mongoOperation.save("userprofile",user);
User savedUser = mongoOperation.findOne("userprofile",
new Query(Criteria.where("id").is("1001")),
User.class);
System.out.println("savedUser : " + savedUser);
mongoOperation.updateFirst("userprofile",
new Query(Criteria.where("firstname").is("yong")),
Update.update("lastname", "new lastname"));
User updatedUser = mongoOperation.findOne("userprofile",
new Query(Criteria.where("id").is("1001")),
User.class);
System.out.println("updatedUser : " + updatedUser);
mongoOperation.remove("userprofile",
new Query(Criteria.where("id").is("1001")),
User.class);
List&User& listUser =
mongoOperation.getCollection("userprofile", User.class);
System.out.println("Number of user = " + listUser.size());
运行看看吧。。。
旅途愉快!
下载次数: 319
下载次数: 316
浏览 11537
yangjizhong24
浏览: 332276 次
来自: 北京
程序已经运行成功,第一次接触webservice,楼主领我入门 ...
楼主介绍的确实简单,但是对于我这种对web service一点 ...
楼主真心不错
Partys 写道addArticleCategories(C ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'用户名:二进制卤蛋
文章数:51
评论数:15
访问量:18817
注册日期:
阅读量:1297
阅读量:3317
阅读量:581032
阅读量:465325
51CTO推荐博文
前几天写了个mongodb原生的工具类,参考“http://ylcodes01./3342”,项目里需要做分布式,所以现在集成到spring中,今天结合spring-mongodb写了一些常用的工具。BaseMongoDaopackage&mon.mongodb.
import&com.mongodb.WriteR
import&mon.mongodb.util.MongoF
import&org.springframework.beans.factory.annotation.A
import&org.springframework.data.domain.S
import&org.springframework.data.mongodb.core.MongoT
import&org.springframework.data.mongodb.core.query.C
import&org.springframework.data.mongodb.core.query.Q
import&org.springframework.data.mongodb.core.query.U
import&java.lang.reflect.ParameterizedT
import&java.util.L
import&java.util.M
public&class&BaseMongoDao&T&&implements&&IBaseMongoDao&T&{
&&&&private&Class&T&&
&&&&@Autowired
&&&&private&MongoTemplate&mongoT
&&&&@Autowired
&&&&private&MongoFactory&mongoF
&&&&public&BaseMongoDao()&{
&&&&&&&&ParameterizedType&parameterizedType&=&(ParameterizedType)&getClass().getGenericSuperclass();
&&&&&&&&clazz&=&(Class&T&)&parameterizedType.getActualTypeArguments()[0];
&&&&@Override
&&&&public&void&insert(T&entity)&{
&&&&&&&&mongoTemplate.insert(entity);
&&&&@Override
&&&&public&T&findOne(String&id)&{
&&&&&&&&Query&query&=&new&Query();
&&&&&&&&query.addCriteria(new&Criteria("_id").is(id));
&&&&&&&&return&getMongoTemplate().findOne(query,clazz);
&&&&@Override
&&&&public&List&T&&find(Query&query)&{
&&&&&&&&return&getMongoTemplate().find(query,clazz);
&&&&@Override
&&&&public&Long&findCount(Query&query)&{
&&&&&&&&return&getMongoTemplate().count(query,clazz);
&&&&@Override
&&&&public&List&T&&findList(Integer&skip,&Integer&limit,Query&query)&{
&&&&&&&&query.with(new&Sort(new&Sort.Order(Sort.Direction.ASC,"createTime")));
&&&&&&&&query.skip(skip).limit(limit);
&&&&&&&&return&find(query);
&&&&@Override
&&&&public&Integer&update(Query&query,&Update&update)&throws&Exception&{
&&&&&&&&WriteResult&writeResult&=&getMongoTemplate().updateFirst(query,update,clazz);
&&&&&&&&return&(null&==&writeResult&?&0&:&writeResult.getN());
&&&&@Override
&&&&public&Integer&update(T&entity)&throws&Exception&{
&&&&&&&&Map&String,Object&&map&=&mongoFactory.converObjectToParams(entity);
&&&&&&&&Query&query&=&new&Query();
&&&&&&&&query.addCriteria(new&Criteria("_id").is(map.get("id")));
&&&&&&&&Update&update&=&(Update)&map.get("update");
&&&&&&&&return&this.update(query,update);
&&&&@Override
&&&&public&Integer&remove(T&entity)&{
&&&&&&&&WriteResult&writeResult&=&getMongoTemplate().remove(entity);
&&&&&&&&return&(null&==&writeResult&?&0&:&writeResult.getN());
&&&&@Override
&&&&public&Integer&remove(Query&query,&T&entity)&{
&&&&&&&&WriteResult&writeResult&=&getMongoTemplate().remove(query,entity.getClass());
&&&&&&&&return&(null&==&writeResult&?&0&:&writeResult.getN());
&&&&public&MongoTemplate&getMongoTemplate(){
&&&&&&&&return&mongoT
}IBaseMongoDaopackage&mon.mongodb.
import&org.springframework.data.mongodb.core.query.Q
import&org.springframework.data.mongodb.core.query.U
import&java.util.L
public&interface&IBaseMongoDao&T&&{
&&&&public&T&findOne(String&id);
&&&&public&List&T&&find(Query&query);
&&&&public&Long&findCount(Query&query);
&&&&public&List&T&&findList(Integer&skip,Integer&limit,Query&query);
&&&&public&void&insert(T&entity);
&&&&public&Integer&update(Query&query,&Update&update)&throws&E
&&&&public&Integer&update(T&entity)&throws&E
&&&&public&Integer&remove(T&entity);
&&&&public&Integer&remove(Query&query,T&entity);
}IMongoEntityDaopackage&mon.mongodb.
import&mon.mongodb.base.IBaseMongoD
import&mon.mongodb.model.MongoE
public&interface&IMongoEntityDao&extends&IBaseMongoDao&MongoEntity&{
&&&&public&MongoEntity&getMongoEntityById(String&id);
}MongoEntityDaopackage&mon.mongodb.
import&mon.mongodb.base.BaseMongoD
import&mon.mongodb.model.MongoE
import&org.springframework.stereotype.R
@Repository
public&class&MongoEntityDao&extends&BaseMongoDao&MongoEntity&&implements&IMongoEntityDao{
&&&&@Override
&&&&public&MongoEntity&getMongoEntityById(String&id)&{
&&&&&&&&MongoEntity&mongoEntity&=&findOne(id);
&&&&&&&&return&mongoE
}MongoEntitypackage&mon.mongodb.
import&org.springframework.data.annotation.Id;
import&org.springframework.data.mongodb.core.mapping.D
@Document(collection&=&"mongoLogInfo")
public&class&MongoEntity&{
&&&&private&String&//主键
&&&&private&String&interfaceM//接口方法名称
&&&&private&String&businessN//业务名称
&&&&private&String&clientReqP//客户端请求参数
&&&&private&String&serviceRepP//服务端响应参数
&&&&private&String&logI//日志内容:包括异常等
&&&&private&Long&clientReqT//客户端调用时间
&&&&private&Long&serviceRepT//服务端响应时间
&&&&private&Long&//持续时间
&&&&private&String&clientReqIpP//客户端请求IP和PORT
&&&&private&String&serviceRepIpP//服务端响应IP和PORT
&&&&private&String&ifS//服务调用是否成功标识,1成功2失败
&&&&private&Long&createT//插入时间
&&&&public&String&getId()&{
&&&&&&&&return&
&&&&public&void&setId(String&id)&{
&&&&&&&&this.id&=&
&&&&public&String&getInterfaceMethod()&{
&&&&&&&&return&interfaceM
&&&&public&void&setInterfaceMethod(String&interfaceMethod)&{
&&&&&&&&this.interfaceMethod&=&interfaceM
&&&&public&String&getBusinessName()&{
&&&&&&&&return&businessN
&&&&public&void&setBusinessName(String&businessName)&{
&&&&&&&&this.businessName&=&businessN
&&&&public&String&getClientReqParams()&{
&&&&&&&&return&clientReqP
&&&&public&void&setClientReqParams(String&clientReqParams)&{
&&&&&&&&this.clientReqParams&=&clientReqP
&&&&public&String&getServiceRepParams()&{
&&&&&&&&return&serviceRepP
&&&&public&void&setServiceRepParams(String&serviceRepParams)&{
&&&&&&&&this.serviceRepParams&=&serviceRepP
&&&&public&String&getLogInfo()&{
&&&&&&&&return&logI
&&&&public&void&setLogInfo(String&logInfo)&{
&&&&&&&&this.logInfo&=&logI
&&&&public&Long&getClientReqTime()&{
&&&&&&&&return&clientReqT
&&&&public&void&setClientReqTime(Long&clientReqTime)&{
&&&&&&&&this.clientReqTime&=&clientReqT
&&&&public&Long&getServiceRepTime()&{
&&&&&&&&return&serviceRepT
&&&&public&void&setServiceRepTime(Long&serviceRepTime)&{
&&&&&&&&this.serviceRepTime&=&serviceRepT
&&&&public&Long&getDuration()&{
&&&&&&&&return&
&&&&public&void&setDuration(Long&duration)&{
&&&&&&&&this.duration&=&
&&&&public&String&getClientReqIpPort()&{
&&&&&&&&return&clientReqIpP
&&&&public&void&setClientReqIpPort(String&clientReqIpPort)&{
&&&&&&&&this.clientReqIpPort&=&clientReqIpP
&&&&public&String&getServiceRepIpPort()&{
&&&&&&&&return&serviceRepIpP
&&&&public&void&setServiceRepIpPort(String&serviceRepIpPort)&{
&&&&&&&&this.serviceRepIpPort&=&serviceRepIpP
&&&&public&String&getIfSuccess()&{
&&&&&&&&return&ifS
&&&&public&void&setIfSuccess(String&ifSuccess)&{
&&&&&&&&this.ifSuccess&=&ifS
&&&&public&Long&getCreateTime()&{
&&&&&&&&return&createT
&&&&public&void&setCreateTime(Long&createTime)&{
&&&&&&&&this.createTime&=&createT
}MongoFactorypackage&mon.mongodb.
import&org.springframework.beans.factory.annotation.A
import&org.springframework.data.mongodb.core.query.U
import&org.
import&java.util.HashM
import&java.util.I
import&java.util.M
import&java.util.S
@Component
public&class&MongoFactory&{
&&&&@Autowired
&&&&private&MongoObjectParams&objectP
&&&&public&Map&String,Object&&converObjectToParams(Object&object)&throws&Exception&{
&&&&&&&&Map&String,Object&&map&=&new&HashMap&String,Object&();
&&&&&&&&Update&update&=&new&Update();
&&&&&&&&Map&String,String&&params&=&objectParams.createParams(object);
&&&&&&&&String&id&=&params.get("id");
&&&&&&&&Set&Map.Entry&String,String&&&sets&=&params.entrySet();
&&&&&&&&Iterator&Map.Entry&String,String&&&iteratos&=&sets.iterator();
&&&&&&&&while(iteratos.hasNext()){
&&&&&&&&&&&&Map.Entry&String,String&&entry&=&iteratos.next();
&&&&&&&&&&&&String&key&=&entry.getKey();
&&&&&&&&&&&&String&value&=&entry.getValue();
&&&&&&&&&&&&if(!key.equals("id")){
&&&&&&&&&&&&&&&&update.set(key,value);
&&&&&&&&&&&&}
&&&&&&&&map.put("id",id);
&&&&&&&&map.put("update",update);
&&&&&&&&return&
}MongoObjectParamspackage&mon.mongodb.
import&org.
import&java.lang.reflect.F
import&java.util.HashM
import&java.util.M
@Component
public&class&MongoObjectParams&{
&&&&private&&String&javaType&=&"java";
&&&&&*&获取查询的参数
&&&&&*&@param&object
&&&&&*&@return
&&&&&*&@throws&Exception
&&&&public&&Map&String,&String&&createParams(Object&object)&throws&Exception&{
&&&&&&&&Map&String,&String&&params&=&new&HashMap&String,&String&();
&&&&&&&&setIntoParams(params,object,&null);
&&&&&&&&return&
&&&&private&&void&setIntoParams(Map&String,&String&&params,Object&object,&String&fatherName)&throws&IllegalAccessException,
&&&&&&&&&&&&Exception&{
&&&&&&&&Field[]&fields&=&object.getClass().getDeclaredFields();
&&&&&&&&for&(Field&file&:&fields)&{
&&&&&&&&&&&&boolean&accessFlag&=&file.isAccessible();
&&&&&&&&&&&&file.setAccessible(true);
&&&&&&&&&&&&String&name&=&file.getName();
&&&&&&&&&&&&Object&value&=&file.get(object);
&&&&&&&&&&&&if(file.getType().getName().equals("java.lang.Class")){
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}else&if(file.getType().getName().contains(javaType)){
&&&&&&&&&&&&&&&&if(fatherName&!=&null&&&&!fatherName.equals("&")){
&&&&&&&&&&&&&&&&&&&&name&=&fatherName+"."+
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&if(value&!=&null){
&&&&&&&&&&&&&&&&&&&&params.put(name,&value+"");
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}else{
&&&&&&&&&&&&&&&&if(value&!=&null){
&&&&&&&&&&&&&&&&&&&&setIntoParams(params,file.get(object),&name);
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&file.setAccessible(accessFlag);
}MongoTimestampConverterpackage&mon.mongodb.
import&org.springframework.core.convert.converter.C
import&java.sql.T
import&java.util.D
public&class&MongoTimestampConverter&implements&Converter&Date,Timestamp&&{
&&&&@Override
&&&&public&Timestamp&convert(Date&date)&{
&&&&&&&&if(null&!=&date){
&&&&&&&&&&&&return&new&Timestamp(date.getTime());
&&&&&&&&return&
}mongo.propertiesmongo.host=192.168.200.234
mongo.port=10143spring-mongodb.xml&?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:mongo="http://www.springframework.org/schema/data/mongo"
&&&&&&&xsi:schemaLocation="http://www.springframework.org/schema/beans
&&&&&&&&http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
&&&&&&&&http://www.springframework.org/schema/context
&&&&&&&&http://www.springframework.org/schema/context/spring-context-4.2.xsd
&&&&&&&&http://www.springframework.org/schema/data/mongo
&&&&&&&&http://www.springframework.org/schema/data/mongo/spring-mongo-1.10.xsd"&
&&&&&!--&不引入这个导致test中的注入不成功&--&
&&&&&context:component-scan&base-package="mon"&/&
&&&&&context:property-placeholder&location="classpath:mongo.properties"/&
&&&&&mongo:mongo-client&host="${mongo.host}"&port="${mongo.port}"&id="mongo"&
&&&&&&&&&mongo:client-options&write-concern="SAFE"&/&
&&&&&/mongo:mongo-client&
&&&&&!--&mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建&--&
&&&&&mongo:db-factory&dbname="runoob"&mongo-ref="mongo"&id="mongoDbFactory"/&
&&&&&bean&id="mappingContext"
&&&&&&&&&&class="org.springframework.data.mongodb.core.mapping.MongoMappingContext"&/&
&&&&&!--&默认Mongodb类型映射&--&
&&&&&bean&id="defaultMongoTypeMapper"
&&&&&&&&&&class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper"&
&&&&&&&&&constructor-arg&name="typeKey"&
&&&&&&&&&&&&&null&/&&!--&这里设置为空,可以把&spring&data&mongodb&多余保存的_class字段去掉&--&
&&&&&&&&&/constructor-arg&
&&&&&/bean&
&&&&&!--&转换器:1、去掉write的_class字段&2、TimestampConverter&--&
&&&&&mongo:mapping-converter&id="mongoConverter"&base-package="mon.mongodb.util"&type-mapper-ref="defaultMongoTypeMapper"&
&&&&&&&&&mongo:custom-converters&
&&&&&&&&&&&&&mongo:converter&
&&&&&&&&&&&&&&&&&bean&class="mon.mongodb.util.MongoTimestampConverter"&/&
&&&&&&&&&&&&&/mongo:converter&
&&&&&&&&&/mongo:custom-converters&
&&&&&/mongo:mapping-converter&
&&&&&!--&mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成&--&
&&&&&bean&id="mongoTemplate"&class="org.springframework.data.mongodb.core.MongoTemplate"&
&&&&&&&&&constructor-arg&name="mongoDbFactory"&ref="mongoDbFactory"&/&
&&&&&&&&&constructor-arg&name="mongoConverter"&ref="mongoConverter"&/&
&&&&&/bean&
&&&&&context:annotation-config&/&
&/beans&#上述spring-mongodb.xml要注意的地方:由于现在用的是mongodb3.X版本,所以就不要使用mongo:mongo标签了,要改成mongo:mongo-client,一些参数要改变了,具体看下源码和文档即可。可能报错如下:mongo-options' is no longer supported for MongoDBMongdbTestpackage&mon.mongodb.
import&mon.mongodb.dao.IMongoEntityD
import&mon.mongodb.model.MongoE
import&org.junit.T
import&org.junit.runner.RunW
import&org.springframework.beans.factory.annotation.A
import&org.springframework.data.mongodb.core.query.C
import&org.springframework.data.mongodb.core.query.Q
import&org.springframework.test.context.ContextC
import&org.springframework.test.context.junit4.SpringJUnit4ClassR
import&java.util.D
import&java.util.L
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations&=&"classpath:spring-mongodb.xml")
public&class&MongdbTest&{
&&&&@Autowired
&&&&private&IMongoEntityDao&mongoEntityD
&&&&&*&根据主键获取实体
&&&&public&void&testFindOne(){
&&&&&&&&MongoEntity&mongoEntity&=&mongoEntityDao.getMongoEntityById("593e3f8bab398c");
&&&&&&&&System.out.println(mongoEntity);
&&&&&*&根据过滤条件获取集合列表
&&&&public&void&testFind(){
&&&&&&&&Query&query&=&new&Query();
&&&&&&&&List&MongoEntity&&list1&=&mongoEntityDao.find(query);
&&&&&&&&System.out.println(list1.size());
&&&&&&&&query&=&new&Query();
&&&&&&&&query.addCriteria(new&Criteria("InterfaceMethod").nin("InterfaceMethod5"));
&&&&&&&&List&MongoEntity&&list2&=&mongoEntityDao.find(query);
&&&&&&&&for(MongoEntity&mongoEntity&:&list2){
&&&&&&&&&&&&System.out.println(mongoEntity);
&&&&&*&根据过滤条件获取查询个数
&&&&public&void&testFindCount(){
&&&&&&&&Query&query&=&new&Query();
&&&&&&&&query.addCriteria(new&Criteria("InterfaceMethod").nin("InterfaceMethod5"));
&&&&&&&&System.out.println(mongoEntityDao.findCount(query));
&&&&&*&根据过滤条件获取分页集合
&&&&&*&skip:从第几条开始,但不包括这条数据
&&&&&*&limit:每页几条数据
&&&&public&void&testFindList(){
&&&&&&&&Query&query&=&new&Query();
&&&&&&&&query.addCriteria(new&Criteria("InterfaceMethod").nin("InterfaceMethod11"));
&&&&&&&&List&MongoEntity&&list&=&mongoEntityDao.findList(10,5,query);
&&&&&&&&for(MongoEntity&mongoEntity&:&list){
&&&&&&&&&&&&System.out.println(mongoEntity.getBusinessName());
&&&&&*&实体新增
&&&&public&void&testInsert(){
&&&&&&&&for(int&i&=&7;&i&&&30&;&i++){
&&&&&&&&&&&&MongoEntity&mongoEntity&=&new&MongoEntity();
&&&&&&&&&&&&mongoEntity.setInterfaceMethod("InterfaceMethod"&+&i);
&&&&&&&&&&&&mongoEntity.setBusinessName("BusinessName"&+&i);
&&&&&&&&&&&&mongoEntity.setClientReqIpPort("ClientReqIpPort"&+&i);
&&&&&&&&&&&&mongoEntity.setServiceRepIpPort("ServiceRepIpPort"&+&i);
&&&&&&&&&&&&mongoEntity.setLogInfo("LogInfo"&+&i);
&&&&&&&&&&&&Long&time1&=&new&Date().getTime();
&&&&&&&&&&&&mongoEntity.setClientReqTime(time1);
&&&&&&&&&&&&Long&time2&=&new&Date().getTime();
&&&&&&&&&&&&mongoEntity.setServiceRepTime(time2);
&&&&&&&&&&&&mongoEntity.setDuration(time2&-&time1);
&&&&&&&&&&&&mongoEntity.setClientReqIpPort("ClientReqIpPort"&+&i);
&&&&&&&&&&&&mongoEntity.setServiceRepIpPort("ServiceRepIpPort"&+&i);
&&&&&&&&&&&&mongoEntity.setIfSuccess("1");
&&&&&&&&&&&&mongoEntity.setCreateTime(new&Date().getTime());
&&&&&&&&&&&&mongoEntityDao.insert(mongoEntity);
&&&&&*&通过传入的实体ID更新实体中的其他内容
&&&&&*&@throws&Exception
&&&&public&void&testUpdateEntity()&throws&Exception{
&&&&&&&&MongoEntity&mongoEntity&=&mongoEntityDao.findOne("593e3f8bab398c");
&&&&&&&&System.out.println("1-------------&"&+&mongoEntity.getBusinessName());
&&&&&&&&mongoEntity.setBusinessName("setBusinessNametest");
&&&&&&&&mongoEntityDao.update(mongoEntity);
&&&&&&&&mongoEntity&=&mongoEntityDao.findOne("593e3f8bab398c");
&&&&&&&&System.out.println("2-------------&"&+&mongoEntity.getBusinessName());
&&&&&*&删除实体对象
&&&&public&void&testRemove(){
&&&&&&&&MongoEntity&mongoEntity&=&mongoEntityDao.findOne("593e4f1caf705aa");
&&&&&&&&System.out.println(mongoEntity);
&&&&&&&&mongoEntityDao.remove(mongoEntity);
&&&&&&&&mongoEntity&=&mongoEntityDao.findOne("593e4f1caf705aa");
&&&&&&&&System.out.println(mongoEntity);
&&&&&*&通过过滤条件和实体对象删除对应数据
&&&&public&void&testRemoveByQuery(){
&&&&&&&&Query&query&=&new&Query();
&&&&&&&&query.addCriteria(new&Criteria("_id").is("593e4f1caf705a3"));
&&&&&&&&MongoEntity&entity&=&new&MongoEntity();
&&&&&&&&System.out.println(mongoEntityDao.remove(query,entity));
}pom.xml(图片中的项目名和下述的pom.xml中的项目名不一致,修改下即可)&project&xmlns="http://maven.apache.org/POM/4.0.0"&xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
&&xsi:schemaLocation="http://maven.apache.org/POM/4.0.0&http://maven.apache.org/maven-v4_0_0.xsd"&
&&&modelVersion&4.0.0&/modelVersion&
&&&groupId&TestSpringMongo3&/groupId&
&&&artifactId&TestSpringMongo3&/artifactId&
&&&packaging&war&/packaging&
&&&version&1.0-SNAPSHOT&/version&
&&&name&TestSpringMongo3&Maven&Webapp&/name&
&&&!--&设定主仓库&--&
&&&repositories&
&&&&&!--&nexus私服&--&
&&&&&repository&
&&&&&&&id&nexus-repos&/id&
&&&&&&&name&Team&Nexus&Repository&/name&
&&&&&&&url&http://192.168.200.205:8081/nexus/content/groups/public/&/url&
&&&&&&&releases&
&&&&&&&&&enabled&true&/enabled&
&&&&&&&/releases&
&&&&&&&snapshots&
&&&&&&&&&enabled&true&/enabled&
&&&&&&&/snapshots&
&&&&&/repository&
&&&/repositories&
&&&!--&设定插件仓库&--&
&&&pluginRepositories&
&&&&&pluginRepository&
&&&&&&&id&nexus-repos&/id&
&&&&&&&name&Team&Nexus&Repository&/name&
&&&&&&&url&http://192.168.200.205:8081/nexus/content/groups/public/&/url&
&&&&&&&releases&
&&&&&&&&&enabled&true&/enabled&
&&&&&&&/releases&
&&&&&&&snapshots&
&&&&&&&&&enabled&true&/enabled&
&&&&&&&/snapshots&
&&&&&/pluginRepository&
&&&/pluginRepositories&
&&&properties&
&&&&&endorsed.dir&${project.build.directory}/endorsed&/endorsed.dir&
&&&&&project.build.sourceEncoding&UTF-8&/project.build.sourceEncoding&
&&&&&!--&设置变量:用于统一管理Library的版本&--&
&&&&&javax.version&7.0&/javax.version&
&&&&&javax.servlet.version&3.1.0&/javax.servlet.version&
&&&&&javax.servlet.jstl.version&1.2&/javax.servlet.jstl.version&
&&&&&log4j.version&1.2.16&/log4j.version&
&&&&&org.slf4j.version&1.7.1&/org.slf4j.version&
&&&&&junit.version&4.12&/junit.version&
&&&&&org.htmlparser.version&2.1&/org.htmlparser.version&
&&&&&org.springframework.version&4.3.7.RELEASE&/org.springframework.version&
&&&&&spring-data-mongodb.version&1.10.4.RELEASE&/spring-data-mongodb.version&
&&&&&mongodb-version&3.4.2&/mongodb-version&
&&&&&javax.validation.version&1.1.0.Final&/javax.validation.version&
&&&&&org.hibernate.version&5.0.2.Final&/org.hibernate.version&
&&&/properties&
&&&dependencies&
&&&&&dependency&
&&&&&&&groupId&junit&/groupId&
&&&&&&&artifactId&junit&/artifactId&
&&&&&&&version&${junit.version}&/version&
&&&&&&&scope&test&/scope&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&javax&/groupId&
&&&&&&&artifactId&javaee-web-api&/artifactId&
&&&&&&&version&${javax.version}&/version&
&&&&&&&scope&provided&/scope&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&javax.servlet&/groupId&
&&&&&&&artifactId&jstl&/artifactId&
&&&&&&&version&${javax.servlet.jstl.version}&/version&
&&&&&&&scope&runtime&/scope&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&javax.servlet&/groupId&
&&&&&&&artifactId&javax.servlet-api&/artifactId&
&&&&&&&version&${javax.servlet.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.slf4j&/groupId&
&&&&&&&artifactId&slf4j-jdk14&/artifactId&
&&&&&&&version&${org.slf4j.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&log4j&/groupId&
&&&&&&&artifactId&log4j&/artifactId&
&&&&&&&version&${log4j.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.htmlparser&/groupId&
&&&&&&&artifactId&htmlparser&/artifactId&
&&&&&&&version&${org.htmlparser.version}&/version&
&&&&&/dependency&
&&&&&!--&spring&framework&--&
&&&&&dependency&
&&&&&&&groupId&org.springframework&/groupId&
&&&&&&&artifactId&spring-aop&/artifactId&
&&&&&&&version&${org.springframework.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.springframework&/groupId&
&&&&&&&artifactId&spring-context-support&/artifactId&
&&&&&&&version&${org.springframework.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.springframework&/groupId&
&&&&&&&artifactId&spring-beans&/artifactId&
&&&&&&&version&${org.springframework.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.springframework&/groupId&
&&&&&&&artifactId&spring-context&/artifactId&
&&&&&&&version&${org.springframework.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.springframework&/groupId&
&&&&&&&artifactId&spring-core&/artifactId&
&&&&&&&version&${org.springframework.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.springframework&/groupId&
&&&&&&&artifactId&spring-expression&/artifactId&
&&&&&&&version&${org.springframework.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.springframework&/groupId&
&&&&&&&artifactId&spring-web&/artifactId&
&&&&&&&version&${org.springframework.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.springframework&/groupId&
&&&&&&&artifactId&spring-webmvc&/artifactId&
&&&&&&&version&${org.springframework.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.springframework&/groupId&
&&&&&&&artifactId&spring-test&/artifactId&
&&&&&&&version&${org.springframework.version}&/version&
&&&&&&&scope&test&/scope&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.springframework.data&/groupId&
&&&&&&&artifactId&spring-data-mongodb&/artifactId&
&&&&&&&version&${spring-data-mongodb.version}&/version&
&&&&&/dependency&
&&&&&!--&javax.validation相关&&--&
&&&&&dependency&
&&&&&&&groupId&javax.validation&/groupId&
&&&&&&&artifactId&validation-api&/artifactId&
&&&&&&&version&${javax.validation.version}&/version&
&&&&&/dependency&
&&&&&dependency&
&&&&&&&groupId&org.hibernate&/groupId&
&&&&&&&artifactId&hibernate-validator&/artifactId&
&&&&&&&version&${org.hibernate.version}&/version&
&&&&&/dependency&
&&&/dependencies&
&&&finalName&TestSpringMongo3&/finalName&
&&&resources&
&&&&&resource&
&&&&&&&directory&src/main/java&/directory&
&&&&&&&includes&
&&&&&&&&&include&**/*.xml&/include&
&&&&&&&&&include&**/*.properties&/include&
&&&&&&&/includes&
&&&&&&&filtering&false&/filtering&
&&&&&/resource&
&&&&&resource&
&&&&&&&directory&src/main/resources&/directory&
&&&&&&&includes&
&&&&&&&&&include&**/*.xml&/include&
&&&&&&&&&include&**/*.properties&/include&
&&&&&&&/includes&
&&&&&&&filtering&false&/filtering&
&&&&&/resource&
&&&/resources&
&&&plugins&
&&&&&plugin&
&&&&&&&artifactId&maven-compiler-plugin&/artifactId&
&&&&&&&version&2.5.1&/version&
&&&&&&&configuration&
&&&&&&&&&source&1.6&/source&
&&&&&&&&&target&1.6&/target&
&&&&&&&&&encoding&UTF-8&/encoding&
&&&&&&&/configuration&
&&&&&/plugin&
&&&&&plugin&
&&&&&&&artifactId&maven-surefire-plugin&/artifactId&
&&&&&&&version&2.12.4&/version&
&&&&&&&configuration&
&&&&&&&&&includes&
&&&&&&&&&&&include&**/*Tests.java&/include&
&&&&&&&&&/includes&
&&&&&&&/configuration&
&&&&&/plugin&
&&&&&plugin&
&&&&&&&groupId&org.apache.maven.plugins&/groupId&
&&&&&&&artifactId&maven-resources-plugin&/artifactId&
&&&&&&&version&2.6&/version&
&&&&&&&configuration&
&&&&&&&&&encoding&UTF-8&/encoding&
&&&&&&&/configuration&
&&&&&/plugin&
&&&/plugins&
&/project&#上述pom.xml一定要注意一个问题:当上述org.hibernate.version配置为5.0.2.Final改成5.4.1Final时,那么要多一个配置,如下:&javax.el-version&2.2.4&/javax.el-version&
&dependency&
&groupId&org.glassfish.web&/groupId&
&artifactId&javax.el&/artifactId&
&version&${javax.el-version}&/version&
&/dependency&不然,也许会报错如下:Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation o nested exception is javax.validation.ValidationException: HV000183: Unable to initialize 'javax.el.ExpressionFactory'. Check that you have the EL dependencies on the classpath, or use ParameterMessageInterpolator insteadCaused by: javax.validation.ValidationException: HV000183: Unable to initialize 'javax.el.ExpressionFactory'. Check that you have the EL dependencies on the classpath, or use ParameterMessageInterpolator instead at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.buildExpressionFactory(ResourceBundleMessageInterpolator.java:102) at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.&init&(ResourceBundleMessageInterpolator.java:45) at org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultMessageInterpolator(ConfigurationImpl.java:423)Caused by: javax.el.ELException: Provider com.sun.el.ExpressionFactoryImpl not foundCaused by: java.lang.ClassNotFoundException: com.sun.el.ExpressionFactoryImpl本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 springmvc mongo 的文章

 

随机推荐