spring-boot使用mongoDB
2017-07-12 16:54
225 查看
spring-boot的高度自动化有利有弊,好处就是利用约定大于配置大大降低了很多常规配置,只需要配置关键的东西即可。但是缺点就是很多情况下如果报错,很难查找,加上国内的springboot的文档并不多,这次我在spring boot 中使用了mongoDB做存储。
首先添resources下面加配置文件:
application.yaml
启动应用application.java:
注意的是这个启动类会去扫描当前包和子包的所有注解的bean,其实如果熟悉了spring的用户就知道典型的spring应用是需要指定扫描包的,springboot并没增加新特性,更多的是高度自动化了,所以扫描包的路径肯定有个默认值,这个默认值很正常就设定为当前包和子包了,所以经常报找不到bean的异常就可以检查一下,需要注入的bean是否属于当前加载类的默认扫描范围内。
最开始我添加了spring-jpa的依赖,然后一致报错:
后来移除spring-jpa的maven包就正常了,应该是 spring-jpa是ORM数据库的支持,一定要指定对应的驱动,我这个应用不需要关系数据库,所以移除即可解决问题。
这样我们可以直接使用@Autowired 注入 UserDao使用MongoRepository提供的默认模版方法。如果模版方法不能够满足,我们可以自己定义:
模版方法会自动根据一些关键字去匹配,十分的“智能“。find, get, By都能够解析成对应的语义。具体支持的关键字,本文不详细解释,可以自己谷歌。
首先添resources下面加配置文件:
application.yaml
spring : application : name : 应用名字 server : port : 8081 --- spring : profiles : dev data : mongodb : host : mongoDB所在地址 port : 27017 database : test server : port : 8080 --- spring : profiles : pub server : port : 8082 --- spring : profiles : active : dev
启动应用application.java:
@SpringBootApplication @RestController public class Application { public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(Application.class); springApplication.run(args); } }
注意的是这个启动类会去扫描当前包和子包的所有注解的bean,其实如果熟悉了spring的用户就知道典型的spring应用是需要指定扫描包的,springboot并没增加新特性,更多的是高度自动化了,所以扫描包的路径肯定有个默认值,这个默认值很正常就设定为当前包和子包了,所以经常报找不到bean的异常就可以检查一下,需要注入的bean是否属于当前加载类的默认扫描范围内。
mongoDB
要使用mongo完成的依赖如下<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> <version>1.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <version>1.5.4.RELEASE</version> </dependency>
最开始我添加了spring-jpa的依赖,然后一致报错:
Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (the profiles "dev" are currently active)
后来移除spring-jpa的maven包就正常了,应该是 spring-jpa是ORM数据库的支持,一定要指定对应的驱动,我这个应用不需要关系数据库,所以移除即可解决问题。
定义model
public class User { @Id private String id; private String name; // setter getter } 一定更注解id.这个是: org.springframework.data.annotation.Id 如果是MySQL的Id注解引用的java.persistence包下面的Id注解。
定义Dao
public interface UserDao extends MongoRepository<User,Long> { }
这样我们可以直接使用@Autowired 注入 UserDao使用MongoRepository提供的默认模版方法。如果模版方法不能够满足,我们可以自己定义:
public interface UserDao extends MongoRepository<User,Long> { User getUserByName(String name); }
模版方法会自动根据一些关键字去匹配,十分的“智能“。find, get, By都能够解析成对应的语义。具体支持的关键字,本文不详细解释,可以自己谷歌。
相关文章推荐
- 使用IDEA搭建SpringBoot项目且整合mongoDB和mysql
- Spring boot中mongodb的使用
- SpringBoot和mongodb开发需要使用到的注解和属性
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十三)使用log4j实现http请求日志入mongodb(2)
- Spring Boot 中使用 MongoDB 增删改查
- springboot(十一):Spring boot中mongodb的使用
- springboot(十一):Spring boot中mongodb的使用
- Spring boot中使用Mongodb
- springboot(十一):Spring boot中mongodb的使用
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十二)使用log4j实现http请求日志入mongodb(1)
- springboot(十一):Spring boot中mongodb的使用
- 基于Springboot使用MongoDB进行简单Gis操作
- SpringBoot(十一):Spring boot 中 mongodb 的使用
- Spring Boot 2.0.0.M7 springBoot-mongodb使用
- 如何使用MongoDB+Springboot实现分布式ID?
- SpringBoot中MongoDB注解概念及使用
- springboot(十一):Spring boot中mongodb的使用
- springboot(十一):Spring boot中mongodb的使用
- 1.2 使用IntelliJ IDEA搭建Spring-Boot与MongoDB数据的简单登录项目
- SpringBoot 中的mongodb的使用