1. 有了上一篇的Mongo后,连接数据库我们还需要更多的信息,比如数据库名字,用户名和密码等。

我们可以继续来配置MongoDbFactory的实例。

public interface MongoDbFactory {

  DB getDb() throws DataAccessException;

  DB getDb(String dbName) throws DataAccessException;
}

然后我们可以继续用MongoDbFactory来创建MongoTemplate的实例。

public class MongoApp {

  private static final Log log = LogFactory.getLog(MongoApp.class);

  public static void main(String[] args) throws Exception {

    MongoOperations mongoOps = new MongoTemplate(new SimpleMongoDbFactory(new Mongo(), "database"));

    mongoOps.insert(new Person("Joe", 34));

    log.info(mongoOps.findOne(new Query(where("name").is("Joe")), Person.class));

    mongoOps.dropCollection("person");
}
}

其中的SimpleMongoDbFactory是MongoDbFactory的实现。

2.1 通过Java based metadata来进行配置

@Configuration
public class MongoConfiguration { public @Bean MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new Mongo(), "database");
}
}

如果需要认证的话,多加一个参数。

@Configuration
public class MongoConfiguration { public @Bean MongoDbFactory mongoDbFactory() throws Exception {
UserCredentials userCredentials = new UserCredentials("joe", "secret");
return new SimpleMongoDbFactory(new Mongo(), "database", userCredentials);
} public @Bean MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongoDbFactory());
}
}

2.2 通过xml进行配置

简单用法(Mongo用默认的主机和端口号)

<mongo:db-factory dbname="database">

提供主机和端口配置的例子

<mongo:db-factory id="anotherMongoDbFactory"
host="localhost"
port="27017"
dbname="database"
username="joe"
password="secret"/>

如果需要配置更多的options,我们可以用mongo-ref来指向一个已有的bean。

<context:property-placeholder location="classpath:/com/myapp/mongodb/config/mongo.properties"/>

<mongo:mongo host="${mongo.host}" port="${mongo.port}">
<mongo:options
connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
auto-connect-retry="${mongo.autoConnectRetry}"
socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}"
slave-ok="${mongo.slaveOk}"
write-number="1"
write-timeout="0"
write-fsync="true"/>
</mongo:mongo> <mongo:db-factory dbname="database" mongo-ref="mongo"/> <bean id="anotherMongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>

最新文章

  1. @SuppressWarnings(&quot;deprecation&quot;)
  2. 第一章 Mybtais的两种启动方式
  3. Web 开发中 20 个很有用的 CSS 库
  4. 事件对象event和计时器
  5. import project后,出现Unable to get system library for the project
  6. UIImage图片转NSData
  7. hadoop源码下载地址
  8. Linux server关闭自己主动
  9. Struts2 注解零配置方法(convention插件使用)
  10. 关于spring的注解方式注入默认值(转) -- 首字母小写
  11. Day5模块-shutil模块
  12. 利用QrCode.Net生成二维码 asp.net mvc c#
  13. Zabbix配置网络流量监控报警
  14. Linux—CentOS7下python开发环境配置
  15. Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求
  16. MySQL 5.7以上 root用户默认密码问题【转】
  17. Python之Eclipse环境下安装与配置
  18. 【校招面试 之 C/C++】第10题 C++不在构造函数和析构函数中调用虚函数
  19. 大数据测试之ETL测试工具和面试常见的问题及答案
  20. Git 码云操作

热门文章

  1. 如何设定linux系统时间
  2. 奇怪也哉!做一个WebApp居然遇到了FF浏览器进不去某页的问题。
  3. linux 修改时间
  4. U盘制作linux centos6.5
  5. attempt to dereference a generic a pointer(转)
  6. PHP 命名空间namespace 和 use
  7. unity, 自定义类中使用print
  8. [na]esxi6.5的vmware安装
  9. cURL命令行工具请求网页
  10. C语言基础(14)-递归