Springboot博客管理系统项目思路小知识点一

1.模块
用户模块和管理员模块
用户模块:
在domain层定义用户的属性(如id、姓名之类的)获取get/set方法,重写tostring方法
在repository层定义数据操作(增删改查)。定义接口,然后实现接口,方便以后改需求的时候好修改。增加和更新其实是一个方法,根据什么增加呢?id,那新建用户的话是没有id的,怎么办?在这里定义了一个类private static AtomicLong counter = new AtomicLong();
简而言之,AtomicLong是一个自增类,根据当前id自增,这样如果新建用户,自动在当前id+1,好机智的方法,那我们是如何存储元素的呢?在这里使用了ConcurrentMap这个map,他是一个线程安全的map,类似于hashmap,我们基于此来实现CRUD,其实本质上还是调用ConcurrentMap的CRUD方法
在controller层主要的作用就是做映射,在这里牵扯到mvc模式
这里如果有不明白dao、service层是干吗的,可以参考这篇博文添加链接描述

@GetMapping
	public ModelAndView list(Model model) {
		model.addAttribute("userList", getUserlist());
		model.addAttribute("title", "用户管理");
		return new ModelAndView("users/list", "userModel", model);
	}

页面和数据相绑定
然后根据repository层定义的方法去绑定
如何绑定呢?首先从存储库获取值?

private List<User> getUserlist() {
 		return userRepository.listUser();
	}

获取form表单

@GetMapping("/form")
	public ModelAndView createForm(Model model) {
		model.addAttribute("user", new User());
		model.addAttribute("title", "创建用户");
		return new ModelAndView("users/form", "userModel", model);
	}

其他方法就是根据repository层的方法定义
api总览在这里插入图片描述
存储
如何实现数据的存储呢?在这里我们使用的是spring-data-jpa,关于data-jpa的知识,我在另一篇博文里详细的解释了一下data-jpa详解在这里不在赘述
由于要实现数据存储,学习过数据库的同学都知道,主键是很重要的,一般以id为主键,所以我们定义id要加上注释@id,同时还要声明主键是递增的
在这里用到了 @GeneratedValue(strategy=GenerationType.IDENTITY)
关于@GeneratedValue详情看这篇博文点这里
用户表的修改到此结束
接着就是Repository层的修改,我们添加了spring-data-jpa的依赖,这样一来,就可以调用其中的方法,所以也就不用手动实现CRUD,只需要继承就好了
然后就是controller层的修改,controller层是对应Repository层的,所以只需替换那些之前手动实现的CRUD方法即可。
说一下几个小的知识点:在开发过程中我们设计原型的时候使用了h2内存数据库
H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。
当然后期还是要切换到主流数据库中,在这里我们切换的是mysql中
elasticsearch

ES 的使用场景大致分为两块

  1. 全文检索。加上分词(IK 是其中一个)、拼音插件等可以成为强大的全文搜索引擎。
  2. 日志统计分析。可以实时动态分析海量日志数据。
    在这个博客项目里使用的是spring-data-elasticsearch,这样就大大简化了操作,实际上还是spring-data,在这里贴几个帖子方便大家深入学习elasticsearch、
    elasticsearch权威指南
    我一直认为,书中的东西很奇怪,内容分为两种,要么是很基础的,要么就是很有高度的,就好比那个你已经知道1+1=2了然后就让你求一些很复杂的东西,所以我的建议是书中知识看的速度要快,看基础,难点有印象即可,然后在实践中巩固知识,验证知识,这样才知道真正难点的作用是什么,所以接下来推两个实战帖子
    elasticsearch实战笔记
    springboot+elasticsearch(这个就是sring-data-elasticsearch)
    慕课网还有一个项目,elastic stack基于搜房网的实践,emmm应该是这个名字,是很好的一个练习elasticsearch的项目,奈何没有时间看了,只能作罢
    回到springboot博客管理系统中,由于是spring-data-elasticsearch所以嘛相对来说简单,我们可以这样理解,他是和spring-data-jpa差不多的(只是可以这样理解,这并不是正确的理解方式)所以说@Document就和@Entity注释意思差不多,表明是实体类就好,blog类和user类类似,不同的是blog类要实现序列化接口。仅此而已。
    在repository层呢,我们建了一个esRepository类,实现CRUDRepository类就好
    在controller层呢,基本还是相同。
    在这里留个坑,提个问题@requestparam和@PathVariable的区别,我们知道他俩都是接收参数的,有什么不同吗?
    --------待更
    架构
    对博客管理系统来一次庖丁解牛,看一下博客管理系统的架构,方便我们编码
    在这里插入图片描述

在这里插入图片描述
需求分析:
在这里插入图片描述
用户管理:
在这里插入图片描述
安全设置:
在这里插入图片描述
博客管理:
在这里插入图片描述
评论管理:
在这里插入图片描述
点赞管理:
在这里插入图片描述
分类管理:
在这里插入图片描述
标签管理:
在这里插入图片描述
首页搜索:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wang_ze_ma/article/details/82818620