总结本周遇到的问题

李明 -
总结本周遇到的问题
问题一 后台项目无法新建java类并且注解为灰色:

当我像往常一样通过作为项目打开pom.xml时发现打开后只显示这些文件
图片.png
于是我尝试直接打开项目文件夹,打开之后发现所有注解都是灰色的
图片.png
并且在新建里没有新建java类这一项。
但是通过运行mvn spring-boot:run却发现能够正常运行。
在网上查找资料发现这和maven有关。
并且发现通过这样打开右侧没有maven这一栏,这也就说明需要添加maven项目,在网上搜索相应方法后只需全局搜索maven并将pom.xml作为maven项目添加即可。
图片.png
但是对于为什么会触发这样的问题,在其他项目中按照之前的打开方式就没有问题,还没有找到很好的解释。

问题二 Docker 安装 MongoDB:

选择安装最新版本

docker pull mongo:latest

查看是否已经安装mongo
图片.png

安装完之后可以使用此命令来运行mongo容器
docker run -itd --name mongo -p 27017:27017 mongo --auth

-p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。
外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
--auth:需要密码才能访问容器服务。

如果出现下面报错则证明该容器已经存在,需要更换名称或是直接运行该容器

docker: Error response from daemon: Conflict. The container name "/mongo" 
is already in use by container "5ce065ddce059a1d022b386c6238486e9d7e943fed58794a
1f44d0cefb0efd62". You have to remove (or rename) that container to be 
able to reuse that name.

See 'docker run --help'.
使用如下操作可查看所有docker容器

docker ps -a

使用下面命令可删除容器

docker rm NAME/CONTAINER ID

图片.png

运行之后可以通过下面命令来查看容器是否在运行
图片.png

接着使用以下命令添加用户和设置密码,并且尝试连接。

docker exec -it mongo mongo admin
db.createUser({ user:'admin',pwd:'000000',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
db.auth('admin', '000000')

图片.png

此时再访问本机的27017端口如果显示如下则表明成功启动。
图片.png

问题三 MongoDB 连接springboot

我们之前设定的用户即admin代表管理员用户,而我们要与springboot进行对接需要建立新的数据库和用户。

我们进入mongodb中后先建立数据库

use appdb

然后再创建用于管理此数据库的用户,可看到人哦了为dboWner,所管理的数据库为刚刚建立的appdb

db.createUser({user:'liming', pwd:'000000', roles:[ {role:'dbOwner', db:'appdb'} ]})

配置对应依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>

然后就是对 application.yml 进行配置

spring.data.mongodb.uri=mongodb://liming:000000@127.0.0.1:27017/appdb

即mongodb://用户名:密码@ip,由于是本地故为127.0.0.1:27017/数据库名称

注意,此时用到的用户名和密码是管理该数据库的用户,不是一开始建立的管理员用户。

为了验证是否配置成功进行如下测试:
Dao:

@Repository
public interface TestReponsitory extends MongoRepository<TestEntity,Integer> {
}

Entity:

public class TestEntity {
  private String testName;
  private Integer testInt;

  public String getTestName() {
    return testName;
  }

  public void setTestName(String testName) {
    this.testName = testName;
  }

  public Integer getTestInt() {
    return testInt;
  }

  public void setTestInt(Integer testInt) {
    this.testInt = testInt;
  }
}

Test:

@SpringBootTest
class TestReponsitoryTest {
  @Autowired
  private TestReponsitory testReponsitory;
  @Test
  void test() {
    TestEntity test = new TestEntity();
    test.setTestInt(1);
    test.setTestName("testName");

    List<TestEntity> all = testReponsitory.findAll();
    System.out.println(all);
  }
}

运行后查询结果显示与我们插入的数据相同
图片.png

我们还可以用以下命令来查看我们所存储的数据
图片.png

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

mongodbspringboot

扩展阅读

加个好友,技术交流

1628738909466805.jpg