SpringBoot集成MongoDB

来源:互联网 发布:java编写工具 编辑:程序博客网 时间:2024/06/07 00:33

本文介绍采用eclipse,测试采用junit

如需转载请标明出处,谢谢。

代码结构如下图:


1.MongoDB依赖配置

pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.cesat</groupId><artifactId>springBootMongoDB</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>springBootMongoDB</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.8.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId></dependency><dependency><groupId>org.pegdown</groupId><artifactId>pegdown</artifactId><version>1.4.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-hateoas</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2.文档建模 

user.java

package com.cesat.bean;import java.util.Date;import java.util.HashSet;import java.util.Set;import javax.validation.constraints.NotNull;import org.springframework.data.annotation.Id;import org.springframework.data.annotation.PersistenceConstructor;import org.springframework.data.mongodb.core.index.Indexed;import org.springframework.data.mongodb.core.mapping.Document;@Document(collection = "user")public class User {@Idprivate String userId;@NotNull@Indexed(unique = true)private String username;@NotNullprivate String password;@NotNullprivate String name;@NotNullprivate String email;@NotNullprivate Date registrationDate = new Date();private Set<String> roles = new HashSet<>();public User() {}@PersistenceConstructorpublic User(String userId, String username, String password, String name, String email, Date registrationDate,Set<String> roles) {super();this.userId = userId;this.username = username;this.password = password;this.name = name;this.email = email;this.registrationDate = registrationDate;this.roles = roles;}public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Date getRegistrationDate() {return registrationDate;}public void setRegistrationDate(Date registrationDate) {this.registrationDate = registrationDate;}public Set<String> getRoles() {return roles;}public void setRoles(Set<String> roles) {this.roles = roles;}}
3.文档持续化

       UserPepository.java

package com.cesat.bean;import org.springframework.data.mongodb.repository.MongoRepository;public interface UserPepository extends MongoRepository<User, String> {//findByUsername中Username大小写敏感,否则eclipse编译不通过public User findByUsername();}
TestDataSourceConfig.java
package com.cesat.bean;import java.util.ArrayList;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.core.env.Environment;import org.springframework.data.mongodb.config.AbstractMongoConfiguration;import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;import com.mongodb.Mongo;import com.mongodb.MongoClient;import com.mongodb.MongoCredential;import com.mongodb.ServerAddress;@Configuration//启用资源库并设定定义资源库接口放置的位置@EnableMongoRepositories(basePackages = "com.cesat.bean")//指定读取数据库配置文件的位置和名称@PropertySource("classpath:application.properties")public class TestDataSourceConfig extends AbstractMongoConfiguration {@Autowiredprivate Environment env;@Overrideprotected String getDatabaseName() {// TODO Auto-generated method stubreturn env.getRequiredProperty("mongo.name");}@Override@Beanpublic Mongo mongo() throws Exception {// TODO Auto-generated method stubServerAddress serverAddress=new ServerAddress(env.getRequiredProperty("mongo.host"));List<MongoCredential> credentials=new ArrayList<>();return new MongoClient(serverAddress, credentials);}}

4.application.properties配置

application.properties

#MongoDBmongo.host=localhostmongo.name=testmongo.port=27017


5.ServletInitializer.java(eclispe 创建springBoot项目时,自动创建。)

ServletInitializer.java

package com.cesat;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.support.SpringBootServletInitializer;public class ServletInitializer extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(SpringBootMongoDbApplication.class);}}

6.SpringBootMongoDbApplication.java(eclispe 创建springBoot项目时,自动创建。)

SpringBootMongoDbApplication.java

package com.cesat;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringBootMongoDbApplication {public static void main(String[] args) {SpringApplication.run(SpringBootMongoDbApplication.class, args);}}

7.测试

RepositoryTests.java

package com.cesat.bean;import java.util.Date;import java.util.HashSet;import java.util.List;import java.util.Set;import org.junit.Before;import org.junit.FixMethodOrder;import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = {TestDataSourceConfig.class })@FixMethodOrderpublic class RepositoryTests {private static Logger logger=LoggerFactory.getLogger(RepositoryTests.class);@AutowiredUserPepository userPepository;@Beforepublic void setup(){Set<String> roles = new HashSet<>();roles.add("manage");User user = new User("1", "zhangsan", "123456", "zhangsan", "zhangsan@qq.com", new Date(), roles);userPepository.save(user);}@Testpublic void findAll(){List<User> users= userPepository.findAll();if(users!=null&&users.size()>0){for (User user : users) {logger.info("User:"+user.getName());//其他打印信息省略}}}}

8.测试结果;