1、模块划分
| 模块名称 | 模块中文名称 |
|---|---|
| tensquare_common | 公共模块 |
| tensquare_article | 文章微服务 |
| tensquare_base | 基础微服务 |
| tensquare_friend | 交友微服务 |
| tensquare_gathering | 活动微服务 |
| tensquare_qa | 问答微服务 |
| tensquare_recruit | 招聘微服务 |
| tensquare_user | 用户微服务 |
| tensquare_spit | 吐槽微服务 |
| tensquare_search | 搜索微服务 |
| tensquare_web | 前台微服务网关 |
| tensquare_manager | 后台微服务网关 |
| tensquare_eureka | 注册中心 |
| tensquare_config | 配置中心 |
| tensquare_sms | 短信微服务 |
| tensquare_article_crawler | 文章爬虫微服务 |
| tensquare_user_crawler | 用户爬虫微服务 |
| tensquare_ai | 人工智能微服务 |
2.docker环境下使用mysql
2.1 下载镜像
docker pull centos/mysql‐57‐centos7
2.2 创建容器
docker run -di --name=xxx -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root
centos/mysql-57-centos7
3.搭建工程(tensquare-base)
3.1 实体类(entity)
@Entity
@Table(name = "tb_label")
public class Label {
@Id
private String id;//
private String labelname;//标签名称
private String state;//状态
private Long count;//使用数量
private Long fans;//关注数
private String recommend;//是否推荐
//getter 、setter 省略
}
3.2 LabelDao
public interface LabelDao extends JpaRepository<Label, String> {
}
JpaRepository<Label, String> 提供了基本的增删改查
JpaSpecificationExecutor<Label> 用于做复杂的条件查询
3.3 service
@Service
public class LabelService {
@Autowired
private LabelDao labelDao;
@Autowired
private IdWorker idWorker;
/**
* 查询所有Label
* @return
*/
public List<Label> findAll() {
return labelDao.findAll();
}
/**
* 根据Id 查询
* @param id
* @return
*/
public Label findById(String id) {
return labelDao.findById(id).get();
}
/**
* 新增
* @param label
*/
public void add(Label label) {
label.setId(idWorker.nextId() + "");
labelDao.save(label);
}
/**
* 修改
* @param label
*/
public void update(Label label) {
labelDao.save(label);
}
/**
* 删除
* @param id
*/
public void delete(String id) {
labelDao.deleteById(id);
}
}
}
3.3 LabelController
@RestController
@RequestMapping("label")
public class LabelController {
@Autowired
private LabelService labelService;
@GetMapping
public Result findAll() {
return new Result(true, StatusCode.OK, "查询成功", labelService.findAll());
}
@GetMapping("{id}")
public Result findById(@PathVariable("id") String id) {
return new Result(true, StatusCode.OK, "查询成功", labelService.findById(id));
}
@PostMapping
public Result add(@RequestBody Label label) {
labelService.add(label);
return new Result(true, StatusCode.OK, "add成功");
}
@PutMapping("{id}")
public Result update(@RequestBody Label label, @PathVariable("id") String id) {
label.setId(id);
labelService.update(label);
return new Result(true, StatusCode.OK, "update成功");
}
@DeleteMapping("{id}")
public Result deleteById(@PathVariable("id") String id) {
labelService.delete(id);
return new Result(true, StatusCode.OK, "delete成功");
}
}
3.4 公共异常
@RestControllerAdvice
public class BaseExceptionHandler {
@ExceptionHandler(Exception.class)
public Result error(Exception e) {
e.printStackTrace();
return new Result(false, StatusCode.ERROR, e.getMessage());
}
}
3.5 跨域处理
跨域是什么?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 。我们是采用前后端分离开发的,也是前后端分离部署的,必然会存在跨域问题。 怎么解决跨域?很简单,只需要在controller类上添加注解@CrossOrigin 即可!这个注解其实是CORS的实现。
CORS(Cross-Origin Resource Sharing, 跨源资源共享)是W3C出的一个标准,其思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是应该失败。因此,要想实现CORS进行跨域,需要服务器进行一些设置,同时前端也需要做一些配置和分析。本文简单的对服务端的配置和前端的一些设置进行分析











网友评论