Spring boot串連和操作mongoDB

來源:互聯網
上載者:User

  Spring boot是對Spring的進一步封裝,旨在簡化Spring的安裝和配置過程。我們知道使用Spring搭建項目環境,往往需要引用很多jar包,並隨著業務的逐漸複雜,建立出很多的xml檔案。Spring boot封裝了Spring整合的很多服務元件,並自動建立這些對象的執行個體,你只用將所需使用的服務元件的jar包引入即可快速構建開發環境。
  Spring boot所整合的服務元件,可在官網找到,你可以勾選所使用的服務元件,並把相應maven 項目下載到本地。
  Spring boot同樣整合了對MongoDB等Nosql的支援,下面介紹通過Spring boot串連和操作MongoDB。 建立Spring boot項目

  本文使用的IDE是idea,其Spring initializr是建立Spring Boot項目的快速可視化組件,當然你也可以構建maven項目,然後在Spring boot官網將相關pom引入。
  建立Spring boot項目,輸入spring boot組件自動設定網址,點擊next。

  輸入maven項目的的相關資訊,並選擇jdk版本。

  選擇需要的服務元件。

建立出的Spring boot的項目是個空的maven項目,pom內包含需要的jar包。 Spring boot串連mongoDB

  Spring data提供了操作多種資料庫的支援,其api簡潔,調用方便。我們使用Spring data進行MongoDB串連。在此介紹兩種串連mongodb的方式。Spring boot有意簡化甚至消除原生Spring架構的xml配置,所以spring boot項目推崇盡量不使用xml設定檔進行bean的管理。 第一種方式是使用properties進行mongoDB的串連配置

  在application.properties中進行mongoDB連接字串配置,org.springframework.boot.autoconfigure.mongo提供了對mongoDB連接字串的配置支援。我們對指定屬性進行配置即可。
注意mongo 2.4以上版本已經不支援如下配置了。

spring.data.mongodb.host=127.0.0.1spring.data.mongodb.port=27017spring.data.mongodb.username=rootspring.data.mongodb.password=rootspring.data.mongodb.database=gis

2.4以上版本使用如下串連配置:

spring.data.mongodb.uri=mongodb://root(userName):root(password)@localhost(ip地址):27017(連接埠號碼)/gis(collections/資料庫)

建立資料庫操作測試類別。

@Componentpublic class DBDaoTest {    @Autowired    private MongoTemplate mongoTemplate;    public void save(Polygon polygon){        mongoTemplate.save(polygon);    }    public void saveRegions(List<GisRegion> gisRegionList){        mongoTemplate.insert(gisRegionList,GisRegion.class);    }    public <T> T findById(Class<T> entityClass, String id) {        return mongoTemplate.findById(id, entityClass);    }    public <T> List<T> findAll(Class<T> entityClass) {        return mongoTemplate.findAll(entityClass);    }    public <T> void remove(T entity) {        mongoTemplate.remove(entity);    }    public <T> void add(T entity) {        mongoTemplate.insert(entity);    }    public <T> void addAll(List<T> entity) {        mongoTemplate.insertAll(entity);    }    public <T> void saveOrUpdate(T entity) {        mongoTemplate.save(entity);    }    public <T> T findOne(Class<T> entityClass) {        return mongoTemplate.findOne(new Query(), entityClass);    }    public List<Polygon> findIntersective(GeoJson geoJson){        Query query=new Query(Criteria.where("geometry").intersects(geoJson));        List<Polygon> list=mongoTemplate.find(query,Polygon.class);        return list;    }    public boolean isExistIntersective(GeoJson geoJson){        Query query=new Query(Criteria.where("geometry").intersects(geoJson).and("_id").is(100000));        boolean res=mongoTemplate.exists(query,GisRegion.class);        return res;    }}

org.springframework.data.mongodb.core包的MongoTemplate類提供對mongodb的所有操作方法,並且會自動裝配串連資料庫的MongoDbFactory類對象,我們在application.properties中定義了MongoDbFactory對象所需要的參數,Spring boot會自動幫我們建立該對象供MongoTemplate使用,如果我們沒有指定連接字串,Spring boot在@Autowired自動裝配MongoTemplate對象時,會預設使用127.0.0.1:27017地址、test資料庫和無密碼訪問方式。
  更多資料庫操作方式,請查看MongoTemplate類的具體內容。 第二種方式是建立配置類進行mongoDB的串連配置

  在maven resource檔案夾下建立database.properties檔案,定義資料庫連接字串。

mongodb.uri=127.0.0.1:27017mongodb.username=rootmongodb.password=rootmongodb.schema=gis

  考慮在項目實際開發過程中經常會切換環境,所以可以採用引用外部配置參數的辦法,Spring boot在propertis檔案中使用@…@預留位置指定外部參數。在pom檔案profile中定義外部參數,供propertis檔案引用。pom.xml的profile檔案配置如下:

<project>...    <profiles>        <profile>            <id>dev</id>            <activation>                <activeByDefault>true</activeByDefault>            </activation>            <properties>                <db.mongo.server>127.0.0.1:27017</db.mongo.server>                <db.mongo.schema>gis</db.mongo.schema>                <db.mongo.user>root</db.mongo.user>                <db.mongo.password>root</db.mongo.password>            </properties>        </profile>    </profiles></project>

database.properties檔案:

#mongodb.uri=@db.mongo.server@#mongodb.username=@db.mongo.user@#mongodb.password=@db.mongo.password@#mongodb.schema=@db.mongo.schema@

建立MongoDBConfig類,執行個體化MongoDbFactory bean:

@Configuration  //等價於XML中配置bean@PropertySource(value = "classpath:database.properties",ignoreResourceNotFound = true)public class MongoDBConfig {    @Value("${mongodb.schema}")    private String databaseName;    @Value("${mongodb.uri}")    private String uri;    @Value("${mongodb.username}")    private String userName;    @Value("${mongodb.password}")    private String password;    @Bean    public MongoDbFactory mongoDbFactory() throws UnknownHostException {        String uriStr="mongodb://"+userName+":"+password+"@"+uri+"/"+databaseName;        System.out.println(uriStr);        MongoClientURI mongoClientURI=new MongoClientURI(uriStr);        MongoDbFactory mongoDbFactory=new SimpleMongoDbFactory(mongoClientURI);        return mongoDbFactory;    }}

Spring架構會在@Autowired自動裝配MongoTemplate時,使用該MongoDbFactory bean。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.