mongodb 开启身份认证_mongodb开启用户认证后,是否能启动web页面

展开全部

让我们构建一个简单的EmployeeManager Web服务,我们将使32313133353236313431303231363533e78988e69d8331333433646435用它来演示与MongoDB连接的HATEOAS。为了引导我们的应用程序,我们将使用Spring Initializr。我们将使用Spring HATEOAS和Spring Data MongoDB作为依赖项。你应该看到类似下图2所示的内容。  图2 :引导应用程序配置完成后,下载zip并将其作为Maven项目导入你喜欢的IDE中。 首先,让我们配置application.properties。

spring.data.mongodb.host= //Mongo server host

spring.data.mongodb.port= //Mongo server port

spring.data.mongodb.username= //Login user

spring.data.mongodb.password= //Password

spring.data.mongodb.database= //Database name

一般来说,如果所有内容都是全新安装的,并且你没有更改或修改任何Mongo属性,则只需提供一个数据库名称(已经通过GUI创建了一个数据库名称)。

spring.data.mongodb.database = EmployeeManager

另外,为了启动Mongo实例,作者创建了一个.bat,它指向安装文件夹和数据文件夹。它是这样的:"C:\Program Files\MongoDB\Server\3.6\bin\mongod" --dbpath D:\Inther\EmployeeManager\warehouse-data\db

现在,我们来快速创建模型。这里有两个模型,员工模型和部门模型。检查它们,确保有没有参数、getter、setter、equals方法和hashCode生成的构造函数。(不用担心,所有代码都在GitHub上,你可以稍后查看它:https://github.com/theFaustus/EmployeeManager。)

public class Employee {

private String employeeId;

private String firstName;

private String lastName;

private int age;

}

public class Department {

private String department;

private String name;

private String description;

private List employees;

}

现在我们已经完成了模型的制作,让我们来创建存储库,以便来测试持久性。存储库如下所示:

public interface EmployeeRepository

extends MongoRepository {

}

public interface DepartmentRepository

extends MongoRepository{

}

如上所示,这里没有方法,因为大家都知道Spring Data中的中心接口被命名为Repository,在其之上是CrudRepository,它提供了处理模型的基本操作。在CrudRepository之上,我们有PagingAndSortingRepository,它为我们提供了一些扩展功能,来简化分页和排序访问。在我们的案例中,最重要的是MongoRepository,它用于严格处理我们的Mongo实例。因此,对于我们的案例来说,除了那些现成的方法外,我们不需要任何其他方法,但是仅出于学习目的,作者在这里要提到的是你可以添加其他查询方法的两种方法:“惰性”(查询创建):此策略将尝试通过分析查询方法的名称并推断关键字(例如findByLastnameAndFirstname)来构建查询。

编写查询:这里没有什么特别的。例如,只用@Query注释你的方法,然后自己编写查询。你也可以在MongoDB中编写查询。下面是基于JSON的查询方法的示例:

@Query("{ 'firstname' : ?0 }")

List findByTheEmployeesFirstname(String firstname);

至此,我们已经可以测试我们持久性如何工作。我们只需要对模型进行一些调整即可。通过调整,作者的意思是我们需要注释一些东西。Spring Data MongoDB使用MappingMongoConverter将对象映射到文档,下面是我们将要使用的一些注释:

@Id :字段级别注释,指出你的哪个字段是身份标识。

@Document :类级别的注释,用于表示该类将被持久化到数据库中。

@DBRef :描述参考性的字段级别注释。

注释完成后,我们可以使用CommandLineRunner获取数据库中的一些数据,CommandLineRunner是一个接口,用于在应用程序完全启动时(即在run()方法之前)运行代码段。

我们已经创建了一些模型,并对它们进行了持久化。现在,我们需要一种与他们交互的方式。如上所说,所有代码都可以在GitHub上找到,因此作者在这里将仅向我们展示一个域服务(接口和实现)。

接口的实现如下:

@Service public class EmployeeServiceImpl implements EmployeeService {

@Autowired

private EmployeeRepository employeeRepository;

@Override

public Employee saveEmployee(Employee e) {

return employeeRepository.save(e);

}

@Override

public Employee findByEmployeeId(String employeeId) {

return employeeRepository.findOne(employeeId);

}

@Override

public void deleteByEmployeeId(String employeeId) {

employeeRepository.delete(employeeId);

}

@Override

public void updateEmployee(Employee e) {

employeeRepository.save(e);

}

@Override

public boolean employeeExists(Employee e) {

return employeeRepository.exists(Example.of(e));

}

@Override

public List findAll() {

return employeeRepository.findAll();

}

@Override

public void deleteAll() {

employeeRepository.deleteAll();

}

}

这里没有什么特别的要注意的,下面我们将继续讨论最后一个难题——控制器!

因此,对于上面实现的所有方法,我们将自己定位在Richardson成熟度模型的第二级,因为我们使用了HTTP动词并实现了CRUD操作。现在,我们有了与数据进行交互的方法,并且可以使用Postman,我们可以如下图3所示检索资源,或者可以如下图4所示添加新资源。

图3 :检索JSON中的部门列表

图4:JSON中添加新员工

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值