javamongodb注解_Spring和MongoDB(全注解)整合过程最近在准备毕业论⽂,论⽂中使⽤到了Spring框架,考虑到数据的格式并⾮有固定的字段格式,因此考虑到使⽤MongoDB⾮关系型数据库存储数据。今天将Spring和MongoDB的整合过程总结如下(有坑,注意选择Spring 框架的版本)。本⽂章将从三个⽅⾯进⾏总结,分别是:
在ubuntu上安装MongoDB
使⽤Java程序测试MongoDB是否安装成功
MongoDB和Spring框架进⾏整合(MongoTemplate和MongoRepository)
Ubuntu上安装MongoDB
在下载MongoDB时,我选择的是从官⽹上下载,结果发现下载速度实在是太慢了,下载完毕之后,我分享到了我的云盘上,MongoDB的版本是Ubuntu X64版本,望读者在下载时,请仔细确认实验机的系统版本。
MongoDB的下载链接:MongoDB Ubuntu X64 ,下载密码为:M6aJqZ
安装的过程:
1、下载好的安装包为:mongodb-linux-x86_64-3.,以我的pc为例,将软件解压在/home/wangbinghua/software路径下,将解压之后的⽂件夹名称更改为mongodb。
2、MongoDB分为服务器端和客户端,因此如果使得MongoDB能够正常被访问,⾸先要启动服务器端,接下来启动客户端,在使⽤完毕之后,关闭服务器端。
启动服务器端准备⼯作
MongoDB服务器端启动开始之后,默认要读取存储数据的⽂件路径以及记录⽇志的⽂件路径,因此在启动之后,要只能数据⽂件路径以及⽇志⽂件路径。
以我的pc为例,在MongDB的安装路径下,建⽴data⽂件夹,绝对路径为:
/home/wangbinghua/software/mongodb/data。在MongDB的安装路径下,建⽴log⽂件夹以及mongdb.log⽂件,绝对路径
为:/home/wangbinghua/software/mongodb/log/mongodb.log。
编写⼀个启动服务器的脚本 start.sh
/
home/wangbinghua/software/mongodb/bin/mongod --dbpath /home/wangbinghua/software/mongodb/data --fork --auth --logpath /home/wangbinghua/software/mongod
b/log/mongodb.log```
将脚本存放在MongoDB的安装路径的bin⽬录下。**--fork** 表明服务器端可以在作为守护线程运⾏,即可以后台运⾏。**--auth** 表明客户端访问MongoDB的数据必须要进⾏权限验证,即如同mysql⼀样进⾏密码和⽤户名进⾏登陆每⼀个数据库。
* 启动MongoDB客户端
编写⼀个启动客户端的脚本 client.sh欧盟就新一轮对俄制裁达成协议
``` shell
/home/wangbinghua/software/mongodb/bin/mongo 127.0.0.1:27017
将脚本存放在MongoDB的安装路径的bin⽬录下。127.0.0.1 表明MongoDB的服务器端地址为127.0.0.1,27017 表明MongoDB服务器端的端⼝号为 27017。
关闭MongDB服务器端
编写⼀个启动客户端的脚本 shutdown.sh
killall mongod
Java程序测试MongoDB
建⽴⼀个Maven⼯程,具体的依赖如下:
mongo-java-driver
rank函数怎么做3.1.0
编写Java测试程序:
//连接服务器端的地址和端⼝号
ServerAddress serverAddress = new ServerAddress("localhost",27017);
/
/project数据库的⽤户名为:proj 密码:proj
char[] password = "proj".toCharArray();
//创建 ⽤户名和密码认证
MongoCredential mongoCredential = ateMongoCRCredential("proj","project",password); List mongoCredentialList = new ArrayList();
mongoCredentialList.add(mongoCredential);
//连接MongoDB的⼀个数据库,需要⽤户名、密码、数据库、服务器端的IP和端⼝号
MongoClient mongoClient = new MongoClient(serverAddress,mongoCredentialList);
MongoDatabase mongoDatabase = Database("project");
System.out.println("connect successfully!");
运⾏结果:
connect successfully!
MongoDB和Spring框架进⾏整合
项⽬的主体依赖
Spring主体框架,spring-webmvc,spring-tx,spring-jdbc
JPA的主体依赖,spring-data-jpa
MongoDB的驱动依赖:mongo-java-driver
Spring和MongoDB的主体依赖:spring-data-mongodb
jsp的主体依赖:jsp-api
servlet的主体依赖:javax.servlet-api
依赖版本
Spring主体框架,4.2.6.RELEASE
JPA的主体依赖,1.10.1.RELEASE
MongoDB的驱动依赖:3.1.0
Spring和MongoDB的主体依赖:1.8.4.RELEASE
jsp的主体依赖:2.1
servlet的主体依赖:3.1.0
整个⼯程使⽤annotation 注解的⽅式来进⾏编写(包括业务逻辑、配置⽂件)
配置⽂件 l 配置⽂件,使⽤Java类的形式进⾏编写:
public class WebConfig implements WebApplicationInitializer {
//相当于 l ⽂件配置
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
/
/注⼊ Spring框架的配置⽂件
//相当于 配置l 容器配置⽂件
AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext(); ister(SpringContextConf.class);
//注册(启动Spring Context 上下⽂)
ContextLoaderListener contextLoaderListener = new ContextLoaderListener(applicationContext);
servletContext.addListener(contextLoaderListener);transfer用法短语
//动态注册 filter
//注册 HiddenHttpMethodFilter 使⽤Restful服务,屏蔽get post⽅法
HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();
FilterRegistration.Dynamic filterRegistration = servletContext.addFilter("HiddenHttpMethodFilter", hiddenHttpMethodFilter); filterRegistration.addMappingForServletNames(
EnumSet.of(DispatcherType.REQUEST,DispatcherType.FORWARD,DispatcherType.INCLUDE),
false,
"dispatcherServlet");
//l
AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext(); ister(SpringWebConf.class);
//动态注册Spring mvc DispatcherServlet
DispatcherServlet dispatcherServlet = new DispatcherServlet(webApplicationContext);
ServletRegistration.Dynamic servletRegistration = servletContext.addServlet("dispatcherServlet",dispatcherServlet); servletRegistration.setLoadOnStartup(1);
servletRegistration.addMapping("/");
}
}
linux上运行shell脚本程序编写MongoDB的配置⽂件,如同在使⽤Mysql时编写conn.properties ⽂件⼀样,具体内容如下:
mongo.database=project
mongo.host=localhost
mongo.port=27017
java下载过程mongo.username=wbh
mongo.password=wbh
编写SpringConfigConf.class,即Spring的配置⽂件,如同编写l 配置⽂件⼀般。
@Configuration
@ComponentScan(value="db",excludeFilters=@ComponentScan.Filter(type = FilterType.ANNOTATION,
value = {Controller.class, EnableWebMvc.class, ControllerAdvice.class}))
@Import({MongoDBConf.class})
public class SpringContextConf {
}
编写Spring Mvc的配置⽂件,SpringWebConf.class,即Spring MVC的配置⽂件,如同编写SpringWeb,xml配置⽂件⼀般。
@Configuration
@ComponentScan(basePackages = "",
useDefaultFilters = false,
includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,value = {Controller.class, ControllerAdvice.class}))
@EnableWebMvc
/****/
public class SpringWebConf {
}
编写MongoDBConf.class,如同编写l ⽂件,被引⼊到SpringContextConf.class 配置类中。有两种⽅式来进⾏操作MongoDB,1、MongoTemplate类,进⾏操作。2、使⽤SpringData的Repository,通过编写接⼝,Spring Data⾃动实现该接⼝,从⽽依赖该类。
使⽤MongoTemplate类操作MongoDB
@Configuration
@PropertySource(value = "classpath:mongodb.properties")
public class MongoDBConf {
@Autowired
private Environment environment;
@Bean
public MongoClient mongoClient(){
String username = Property("mongo.username");
String password = Property("mongo.password");
String database = Property("mongo.database");
String host = Property("mongo.host");
Integer port = Integer.Property("mongo.port"));
ServerAddress serverAddress = new ServerAddress(host,port);
MongoCredential mongoCredential = ateCredential(username, database, CharArray()); List mongoCredentialList = new ArrayList<>();
mongoCredentialList.add(mongoCredential);
return new MongoClient(serverAddress,mongoCredentialList);
}
@Bean
public MongoDbFactory mongoDbFactory(){
String database = Property("mongo.database");
return new SimpleMongoDbFactory(mongoClient(),database);
}
@Bean
public MongoTemplate mongoTemplate(){
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());
return mongoTemplate;
}
}```
使⽤MVC三层结构来构建⼯程。
数据层,数据永久层:
```java
private MongoTemplate mongoTemplate;
服务层,服务层(接⼝和实现类):
//接⼝
public interface PersonService {
public List findAllPerson();
}```
``` java
php免费学习视频教程
@Service
public class PersonServiceImpl implements PersonService {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public List findAllPerson() {

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。