美文网首页
第一章-系统设计与工程搭建

第一章-系统设计与工程搭建

作者: Khai_KD | 来源:发表于2019-05-08 16:42 被阅读0次

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进行跨域,需要服务器进行一些设置,同时前端也需要做一些配置和分析。本文简单的对服务端的配置和前端的一些设置进行分析

相关文章

网友评论

      本文标题:第一章-系统设计与工程搭建

      本文链接:https://www.haomeiwen.com/subject/znymoqtx.html