如何使用Springboot连接MongoDB数据库(连接多数据库),以及设置SSL
如何使用Springboot连接MongoDB数据库(连接多数据库),以及设置SSL业务需求,需要能连接配置了ssl连接的mongoDB。话不多说先连接数据库吧!本文只介绍基于Springboot中MongoTemplate的使用。使用前需要创建Springboot的基本工程哦,这部分就不介绍啦。首先pom文件的引用:<dependency><groupId>org.spr
如何使用Springboot连接MongoDB数据库(连接多数据库),以及设置SSL
业务需求,需要能连接配置了ssl连接的mongoDB。
话不多说先连接数据库吧!
本文只介绍基于Springboot中MongoTemplate的使用。
使用前需要创建Springboot的基本工程哦,这部分就不介绍啦。
首先pom文件的引用:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
接下来就是两种方式来使用MongoTemplate了。
第一种使用配置文件配置数据源,使用默认的MongoTemplate
配置yml文件(如果是别的类型的配置文件也可以只不过格式不同而已):
spring:
data:
mongodb:
host: 192.168.1.191
port: 27017
database: test
authentication-database: admin
username: user
password: 123456
大功告成!配置完了,直接使用就行了。
接下来测试一下吧!
创建一个entity
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
@Document(collection = "demo_collection") //表名
public class DemoEntity implements Serializable {
@Id //绑定每个表中的_id字段
private Long id;
private String title;
private String description;
private String by;
private String url;
private String corn;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getBy() {
return by;
}
public void setBy(String by) {
this.by = by;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getCorn() {
return corn;
}
public void setCorn(String corn) {
this.corn = corn;
}
}
创建DAO层接口
public interface DemoDao {
void saveDemo(DemoEntity demoEntity);
void removeDemoById(Long id);
void updateDemo(DemoEntity demoEntity);
DemoEntity findDemoById(Long id);
List<DemoEntity> findDemos();
}
@Repository
public class DemoDaoImpl1 implements DemoDao {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public void saveDemo(DemoEntity demoEntity) {
mongoTemplate.save(demoEntity);
}
@Override
public void removeDemoById(Long id) {
Query query = new Query(Criteria.where("id").is(id));
mongoTemplate.findAllAndRemove(query,DemoEntity.class);
}
@Override
public void updateDemo(DemoEntity demoEntity) {
Query query = new Query(Criteria.where("id").is(demoEntity.getId()));
Update update = new Update();
update.set("title", demoEntity.getTitle());
update.set("description", demoEntity.getDescription());
update.set("by", demoEntity.getBy());
update.set("url", demoEntity.getUrl());
update.set("corn", demoEntity.getCorn());
mongoTemplate.updateFirst(query, update, DemoEntity.class);
}
@Override
public DemoEntity findDemoById(Long id) {
Query query = new Query(Criteria.where("id").is(id));
DemoEntity demoEntity = mongoTemplate.findOne(query, DemoEntity.class);
return demoEntity;
}
@Override
public List<DemoEntity> findDemos() {
return mongoTemplate.findAll(DemoEntity.class);
}
}
很简单吧!直接使用就可以,用Query 可以执行一些特殊的筛选操作。以上测试没有问题哦,直接可以用,如果不好用那就排查本地环境吧。
第二种多数据源配置
首先我们需要多数据源的基本配置信息,本文我介绍的是同一个数据库URL中创建的多个database的操作。
yml配置文件:
mongodb:
url: mongodb://user:123456@192.168.1.191:27017/
database:
test: test
test1: test1
如果需要连个多个url也是可以的只要多配置几个url就可以了。
我们还是使用上面创建的entity。
首先创建@Bean:
@Configuration
public class MongoDBConfig {
@Value("${mongodb.url}")
private String mongoUrl;
@Value("${mongodb.database.test}")
private String test;
@Value("${mongodb.database.test1}")
private String test1;
@Primary
@Bean
public MongoTemplate mongoTemplate() {
return new MongoTemplate(
new SimpleMongoClientDatabaseFactory(MongoClients.create(mongoUrl), test));
}
@Bean(name = "TemplateTest")//数据源1的database使用test
public MongoTemplate mongoTemplateTest() {
return new MongoTemplate(
new SimpleMongoClientDatabaseFactory(MongoClients.create(mongoUrl), test));
}
@Bean(name = "TemplateTest1")//数据源2的database使用test1
public MongoTemplate mongoTemplateTest1() {
return new MongoTemplate(
new SimpleMongoClientDatabaseFactory(MongoClients.create(mongoUrl), test1));
}
// 开启事务
@Bean
MongoTransactionManager transactionManager(MongoDatabaseFactory factory){
return new MongoTransactionManager(factory);
}
}
接下来,使用:
@Repository
public class DemoDaoImpl implements DemoDao {
@Autowired
@Qualifier("TemplateTest")
private MongoTemplate mongoTemplateTest;
@Autowired
@Qualifier("TemplateTest1")
private MongoTemplate mongoTemplateTest1;
@Override
public void saveDemo(DemoEntity demoEntity) {
mongoTemplateTest1.save(demoEntity);
}
@Override
public void removeDemoById(Long id) {
Query query = new Query(Criteria.where("id").is(id));
mongoTemplateTest.findAllAndRemove(query,DemoEntity.class);
}
@Override
public void updateDemo(DemoEntity demoEntity) {
Query query = new Query(Criteria.where("id").is(demoEntity.getId()));
Update update = new Update();
update.set("title", demoEntity.getTitle());
update.set("description", demoEntity.getDescription());
update.set("by", demoEntity.getBy());
update.set("url", demoEntity.getUrl());
update.set("corn", demoEntity.getCorn());
mongoTemplateTest.updateFirst(query, update, DemoEntity.class);
}
@Override
public DemoEntity findDemoById(Long id) {
Query query = new Query(Criteria.where("id").is(id));
DemoEntity demoEntity = mongoTemplateTest.findOne(query, DemoEntity.class);
return demoEntity;
}
@Override
public List<DemoEntity> findDemos() {
return mongoTemplateTest.findAll(DemoEntity.class);
}
}
创建的Bean就是对应的数据库,如果使用多个URL那就多配置URL然后设置上就好了,很简单的。
接下来就是SSL的设置了
只要在能初始化跑过的地方加上以下代码
String pass = "changeit";
System.setProperty("javax.net.ssl.trustStore", "D:\\source\\test\\sichuanAlarm\\src\\main\\resources\\rootCert");
System.setProperty("javax.net.ssl.trustStorePassword", pass);
pass 是证书的密码,使用openssl创建证书的时候用的密码相同。
rootCert就是证书路径啦!
完美解决。
更多推荐
所有评论(0)