受歡迎的贛州網(wǎng)站建設(shè)怎樣做seo搜索引擎優(yōu)化
首先說(shuō)一下背景,因?yàn)槠渌囊粋€(gè)web工程有使用mongo,我想著給另外一個(gè)工程把mongo也加過(guò)來(lái)吧。也是最近做一個(gè)發(fā)送 丘比特信 的需求,覺(jué)得這個(gè)信應(yīng)該是存到 mongodb。結(jié)果拿過(guò)來(lái)遇到了很大的坑,也是對(duì)版本對(duì)原理不了解吧。? ?
下面介紹一下引入的過(guò)程及遇到的坑和解決方案:
第一步,先說(shuō)版本:
spring boot 的版本
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.1.RELEASE</version>所以mongodb的版本也對(duì)應(yīng):
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId><version>2.3.1.RELEASE</version> </dependency>說(shuō)一下涉及到mongo的一些類對(duì)應(yīng)版本:
spring-data-mongodb-3.0.1.RELEASE
spring-boot-starter-data-mongodb-2.3.1.RELEASE
mongodb-driver-sync-4.0.4
mongodb-driver-core-4.0.4
bson-4.0.4
第二步,就是代碼:
剛開(kāi)始的想法是拿來(lái)即用
@Autowired private MongoTemplate mongoTemplate;注意:程序都起不來(lái),因?yàn)檎也坏?MongoTemplate
然后自己通過(guò)@Bean創(chuàng)建MongoTemplate
@Beanpublic MongoClient mongoClient() {String connectionUserName = "";String connectionUserInfo = "";try {connectionUserName = URLEncoder.encode("XXX","UTF-8");connectionUserInfo = URLEncoder.encode("XXXXXX","UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}String connectionString = "mongodb://"+connectionUserName+":"+connectionUserInfo+"@XXXXXXXXX:XXXXXXXXX/XXXXXXXXX?authMechanism=SCRAM-SHA-1";return MongoClients.create(connectionString);}@Beanpublic MongoTemplate mongoTemplate() {return new MongoTemplate(mongoClient(), "XXXXXXXXX");}
注意:
網(wǎng)上的很多實(shí)例,連接串都是沒(méi)有用戶名和密碼的。
"mongodb://username:password@host:port/dbname?authMechanism=SCRAM-SHA-1";
我們的密碼是含有@符號(hào),所以要encode,
username:password,這個(gè)中間的冒號(hào)一定不能encode,在這反復(fù)異常。冒號(hào)encode,提示找不到密碼, 冒號(hào)不encode,提示用戶名或者密碼包含@或者冒號(hào)。
然后是禁用MongoDB數(shù)據(jù)庫(kù)自動(dòng)化配置:
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) //剛開(kāi)始只排除第一個(gè)類,反復(fù)報(bào)異常
第三步,使用
Query query = new Query(Criteria.where("baseCountryCode").is(country));List<BeforeVipCupidMongo> cupidList = mongoTemplate.find(query, BeforeVipCupidMongo.class);
總結(jié):
- 版本對(duì)照,spring boot 的版本 和 mongo 的版本;
- spring boot 禁用 mongodb 數(shù)據(jù)庫(kù)自動(dòng)化配置;
- 如果自定義MongoTemplate,需要注意 connectionString,密碼如果含有@或者:,一定要encode,而username:password這個(gè)之間的:是不能encode的;
- 操作mongo的方式
?參考資料:
SpringBoot與MongoDB版本對(duì)照參考_mongodb和springboot版本_一恍過(guò)去的博客-CSDN博客
https://www.cnblogs.com/huifeidezhuzai/p/16352608.html
https://www.cnblogs.com/zeussbook/p/15330735.html?
詳解SpringBoot整合MongoDB技術(shù)分解_獨(dú)善其身有始有終的技術(shù)博客_51CTO博客