spring-boot使用mongoDB

42 篇文章 1 订阅
7 篇文章 0 订阅

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都能够解析成对应的语义。具体支持的关键字,本文不详细解释,可以自己谷歌。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当使用spring-boot-starter-data-mongodb时,如果启动时出现错误,可能有以下几个原因导致: 1. 依赖版本不匹配:请确认spring-boot-starter-data-mongodb的版本和其他相关依赖的版本是否兼容。可以通过查看官方文档或者其他资源来确认依赖的正确版本。 2. 配置错误:请检查application.properties或application.yml文件中与mongodb相关的配置项是否正确。包括数据库的连接地址、用户名、密码等。如果有特殊字符,可能需要进行转义。 3. 依赖缺失:如果启动时报错指明找不到相关的类或方法,可能是由于缺少依赖。请确认是否正确添加了spring-boot-starter-data-mongodb的依赖,并且没有遗漏其他必需的依赖。 4. 数据库连接问题:请确认mongodb数据库是否已经正确启动,并且可以通过提供的连接地址连接到数据库。可以尝试使用mongodb的官方客户端工具来测试连接的可用性。 5. 其他问题:如果以上情况都排除了,可以查看具体的错误日志或异常信息,尝试通过搜索引擎或开发社区寻找类似的问题和解决方案。 总之,在解决spring-boot-starter-data-mongodb启动报错时,需要仔细排查可能的原因,并逐一尝试解决,最终找到问题所在并进行修复。 ### 回答2: 当使用spring-boot-starter-data-mongodb启动项目时遇到错误,可能是由于以下几个原因导致的: 1. 缺少MongoDB依赖:确认在pom.xml文件中添加了正确的MongoDB依赖,例如: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 2. MongoDB的配置错误:检查application.properties或application.yml文件中的MongoDB配置,确保配置的是正确的MongoDB地址、端口和数据库名。 3. 缺少MongoDB的驱动程序:在pom.xml文件中添加MongoDB驱动程序的依赖,例如: ``` <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> </dependency> ``` 4. MongoDB连接身份验证错误:如果MongoDB设置了身份验证,需要在配置文件中添加相应的用户名和密码,确保登录凭据正确。 5. MongoDB服务未启动:检查MongoDB服务是否已经启动,可以通过命令行或者MongoDB可视化工具来确认。 如果以上步骤都正确无误,仍然无法启动项目并且出现报错,请检查报错信息,并且根据报错信息进一步排查和解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值