1、配置:
<?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.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.7.xsd"
default-lazy-init="true">
<!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 -->
<mongo:mongo host="${mongo.host}" port="${mongo.port}">
<mongo:options connections-per-host="800"
threads-allowed-to-block-for-connection-multiplier="4"
connect-timeout="80000"
max-wait-time="150000"
auto-connect-retry="true"
socket-keep-alive="true"
socket-timeout="150000"
slave-ok="true"
write-number="1"
write-timeout="1000"
write-fsync="true" />
</mongo:mongo>
<bean id="mongoMappingContext" class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />
<!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
<mongo:db-factory id="factory" mongo-ref="mongo"
dbname="${mongo.dbname}" username="${mongo.username}" password="${mongo.password}" />
<!-- 映射转换器,扫描back-package目录下的文件(当前使用注解方式),根据注释,把它们作为mongodb的一个collection的映射 -->
<bean id="mongoConverter"
class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
<constructor-arg name="mongoDbFactory" ref="factory" />
<constructor-arg name="mappingContext" ref="mongoMappingContext" />
<!-- 实体反序列化时使用属性而非字段 spring data mongodb 1.7不支持此属性 -->
<!-- <property name="useFieldAccessOnly" value="false" /> -->
</bean>
<!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="factory" />
<constructor-arg name="mongoConverter" ref="mongoConverter" />
<property name="writeResultChecking" value="EXCEPTION" />
</bean>
<!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->
<mongo:repositories base-package="com.***.mongo.repository"
factory-class="com.***.repository.support.BaseRepositoryFactoryBean"
mongo-template-ref="mongoTemplate">
</mongo:repositories>
</beans>
2、相关的代码:
(1)基础类BaseRepository:
*/
@NoRepositoryBean
public interface BaseRepository<T,ID extends Serializable> extends MongoRepository<T, ID> {
}
(2)BaseRepository实现类:BaseRepositoryImpl
public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleMongoRepository<T, ID> implements BaseRepository<T,ID> {
private final MongoOperations mongoOperations;
public BaseRepositoryImpl(MongoEntityInformation<T, ID> metadata, MongoOperations mongoOperations) {
super(metadata, mongoOperations);
this.mongoOperations = mongoOperations;
}
}
(3)BaseRepositoryFactoryBean类:动态注入相关的配置信息
public class BaseRepositoryFactoryBean<R extends MongoRepository<T, I>, T, I extends Serializable> extends
MongoRepositoryFactoryBean<R, T, I> {
@Override
public RepositoryFactorySupport getFactoryInstance(
MongoOperations operations) {
return new EntityRepositoryFactory<T, Serializable>(operations);
}
private static class EntityRepositoryFactory<T, I extends Serializable> extends MongoRepositoryFactory {
private MongoOperations mongoOperations;
public EntityRepositoryFactory(MongoOperations mongoOperations) {
super(mongoOperations);
this.mongoOperations = mongoOperations;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
protected Object getTargetRepository(RepositoryMetadata metadata) {
MongoEntityInformation<?, Serializable> entityInformation = getEntityInformation(metadata.getDomainType());
return new BaseRepositoryImpl(entityInformation, mongoOperations);
}
@Override
protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {
return BaseRepository.class;
}
}
}
3、使用方法:
@Autowired
private BaseRepository<**Entity, String> baseRepository;
相关推荐
1098.1.3 停止MongoDB 1108.2 监控 1108.2.1 使用管理接口 1108.2.2 serverStatus 1128.2.3 mongostat 1138.2.4 第三方插件 1138.3 安全和认证 1148.3.1 认证的基础知识 1148.3.2 认证的工作原理 ...
包括Database,HttpGet,Cache,Session等多种基础类都支持多驱动扩展,方便您选择适合自己系统环境的配置。 真正的自动加载和统一的命名空间 借助于PHP5的autoload功能,系统提供了统一的自动加载模式和统一的命名...
而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而...
而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而...
项目的功能构架 了解 了解项目的功能构架 项目的技术架构 理解 理解项目...配置开发工具能够参考完成基础工程搭建"页面查询接口定义 应用 重点 能够定义CMS页面列表接口 "能够理解模型类中注解的作用理解Lombok的好处...
而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而...
学习springmvc,要有一定java web开发基础。同时对spring框架要有一定了解。 3、课程亮点 系统的学习Spring框架中各个部分,掌握Spring中一些高级特性的使用。 l Spring IoC n 设计模式-工厂模式 n 基础应用-入门...
提供数据库读写分离、及读负载均衡,并且允许配置多个不同的数据库,甚至允许在运行期间增加新的数据库配置,并自动映射ORM。允许执行标准的SQL或存储过程,同时提供了一个简单、轻量的ORM工具,并集成Hibernate、...
Steedos平台nodejs和mongodb中的Salesforce替代方案使用元数据描述对象,字段,代码,逻辑和页面布局。 元数据可以导入到Steedos中,可以在产品界面中进行修改,也可以通过Steedos Metadata API进行操作。 :robot_...
包括Database,HttpGet,Cache,Session等多种基础类都支持多驱动扩展,方便您选择适合自己系统环境的配置。 6.真正的自动加载和统一的命名空间 借助于PHP5的autoload功能,系统提供了统一的自动加载模式和统一的...
1. 准备有效MongoDB、MySQL数据库,并配置到resources/application-dev.yml 2. 初始化数据库 mongoDB脚本:doc/mongoDB.sql MySQL脚本:doc/stock.sql 2.2 启动程序 1. 执行 src/test/java/...
支持代码高亮提供功能齐全的后台管理页面使用RESTful风格API管理后台资源通过配置文件与环境变量即可修改博客基本设置提供基础的SEO优化功能:生成站点地图,自动向搜索引擎提交新链接支持Docker + Nginx + Gunicorn...
OriginBlog的开发目标是打造一个轻量,美观且易扩展的博客系统,它具有以下特性: 支持多用户,允许用户发表文章,参与后台管理 基于角色进行权限访问控制,可自定义角色 提供文章,评论,个人页面,分类,标签,...
@Configuration声明当前类是一个配置类 @Bean注解在方法上,声明当前方法的返回值为一个Bean AOP @Aspect 声明是一个切面 拦截规则@After @Before @Around PointCut JoinPoint Spring...
Spring Boot 基础教程(基于1.3.x-1.5.x) 快速入门 chapter1:基本项目构建(可作为工程脚手架),引入web模块,完成一个简单的RESTful API 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程 ...
个人开发在项目中因为比较多的使用了多个数据库数据源,以前的做法是在spring-boot的基础上通过新建配置类来实现多数据源的操作,而且在事务操作上不是很友好,并且如果多个项目都使用到的话,每个项目都得写一套,...
类加载器的高级特性(自定义类加器实现加密解密) iBATIS开源主流框架(实现半自动化hibernate) 企业实用技能之详解(眼睛横纹模式验证码防止恶意登陆) 动态页面的静态化处理 图片上传技术 在springMVC中实现原始的Excel...
##配置文件下载下来的代码后进入apache-nutch-2.3.1目录,项目替换的mongodb,mysql,solr都是本地配置的,如果不是在本地配置的,则需要修改配置文件。 conf / gora.properties中,如果mongodb不是在本
mongodb strom spark java语言 语言语法基础 异常 泛型 内部类 反射 序列化 nIo 匿名类 包装类 优先级 引用 语言工具类库 容器类 集合 链表 map 工具类 系统类 日期类 数字类 字符串+正则 ...
CHAOS 项目旨在开发控制系统和数据采集框架的新概念,以高度抽象的方式提供控制和管理大型科学或非科学基础设施所需的所有服务。 !CHAOS 通过引入控制服务的新概念重新定义了控制系统范式,即分布式、可扩展的提供者...