您的位置:首页 > 数据库 > Mongodb

spring-boot使用mongoDB

2017-07-12 16:54 225 查看
spring-boot的高度自动化有利有弊,好处就是利用约定大于配置大大降低了很多常规配置,只需要配置关键的东西即可。但是缺点就是很多情况下如果报错,很难查找,加上国内的springboot的文档并不多,这次我在spring boot 中使用了mongoDB做存储。

首先添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都能够解析成对应的语义。具体支持的关键字,本文不详细解释,可以自己谷歌。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: