• 68:第六章:开发文章服务:1:内容梳理;article表介绍;创建【article】文章服务;


    说明:

    (1)本篇博客内容:开发文章服务:1:内容梳理;article表介绍;创建【article】文章服务;

    目录

    一:【文章服务】部分,内容梳理;

    二:article文章表;

    三:创建【article】文章服务;

    1.pom.xml; 

    2.application.yml配置文件;

    3.logback-spring.xml日志配置文件;

    4.Application主启动类;

    四:【article】文章服务,创建测试用的HelloController,看看项目是否OK;


    一:【文章服务】部分,内容梳理;

    (1)在前台的作家中心,用户是可以发表文章的;

              ● 发表文章的时候,会用到一款富文本编辑器;

    (2)用户在内容管理处,可以查看自己发表的所有文章;

    (3)用户发表了一篇文章后,是需要进行审核的;审核分为自动审核和人工审核;

              ● 自动审核:我们将采用阿里的文本检测API来做;

              ● 人工审核:对于一些模棱两可的文章,光使用阿里自动审核还不够;那么,管理员会在后台系统处,进行人工审核;

    (4)在前台系统的首页,也会展示目前所有的用户的、审核通过的文章列表;


    二:article文章表;

    (1)content字段:

              ● 用户是在富文本编辑器中写文章的;富文本编辑器中的内容,不只有文字等,还会有一些HTML代码;

              ● 我们这儿,目前把文章内容,保存在了MariaDB数据库中,这其实是不好的;后面我们会改善;

    (2)article_type字段:

              ● 如果文章类型是1(图文),那么表示该文章是需要有一个封面的;article_cover字段保存了封面图的地址;

    (3)is_appoint字段:

              ● 定时发布文章,我们会使用定时任务来做;

    (4)article_status字段:

              ● 只有文章在已发布的情况下才能撤回和删除,体现的一种倾向:"审核中"、"机审结束,等待人工审核"这两种状态下,是一种还在流程中的状态;只要是在流程中的状态,表示其正在被其他业务处理;所以,对于正处于这种状态的文章,我们不应该对其删除;

    (5)read_counts字段:

              ● 针对这种并发量将会比较高的数据,我们后面会借助redis来优化;(comment_counts数据,我们也会使用redis来优化)

    (6)mongo_file_id字段:

              ● 后面,我们使用MongoDB来优化的时候,会使用到这个字段;


    三:创建【article】文章服务;

     

    1.pom.xml; 

    在【article】服务中,引入【api】接口工程的依赖; 

    1. <project xmlns="http://maven.apache.org/POM/4.0.0"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <parent>
    5. <artifactId>imooc-news-devartifactId>
    6. <groupId>com.imoocgroupId>
    7. <version>1.0-SNAPSHOTversion>
    8. parent>
    9. <modelVersion>4.0.0modelVersion>
    10. <artifactId>imooc-news-dev-service-articleartifactId>
    11. <dependencies>
    12. <dependency>
    13. <groupId>com.imoocgroupId>
    14. <artifactId>imooc-news-dev-service-apiartifactId>
    15. <version>1.0-SNAPSHOTversion>
    16. dependency>
    17. dependencies>
    18. project>

     

    2.application.yml配置文件;

    (1)application.yml:

    1. ############################################################
    2. #
    3. # article文章微服务
    4. # web访问端口号 约定:8001
    5. #
    6. ############################################################
    7. server:
    8. # port: 8001
    9. tomcat:
    10. uri-encoding: UTF-8
    11. max-swallow-size: -1 # tomcat默认大小2M,超过2M的文件不会被捕获,需要调整此处大小为100MB或者-1即可
    12. ############################################################
    13. #
    14. # 配置项目信息
    15. #
    16. ############################################################
    17. spring:
    18. profiles:
    19. active: dev # yml中“配置文件”的环境配置,dev表示开发环境,test表示测试环境,prod表示生产环境;
    20. application:
    21. name: service-article
    22. jackson:
    23. date-format: yyyy-MM-dd HH:mm:ss
    24. time-zone: GMT+8
    25. datasource: # 数据源的相关配置
    26. type: com.zaxxer.hikari.HikariDataSource # 数据源类型:HikariCP
    27. driver-class-name: com.mysql.jdbc.Driver # mysql驱动
    28. url: jdbc:mysql://localhost:3308/imooc-news-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
    29. username: root
    30. password: **********
    31. hikari:
    32. connection-timeout: 30000 # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒
    33. minimum-idle: 5 # 最小连接数
    34. maximum-pool-size: 20 # 最大连接数
    35. auto-commit: true # 自动提交(此属性控制从池返回的连接的默认自动提交行为)
    36. idle-timeout: 600000 # 连接超时的最大时长(毫秒),超时则被释放(retired),默认:10分钟
    37. pool-name: DateSourceHikariCP # 连接池名字
    38. max-lifetime: 1800000 # 连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms
    39. connection-test-query: SELECT 1
    40. #配置MongoDB
    41. data:
    42. mongodb:
    43. uri: mongodb://root:root@192.168.***.***:27017 #MongoDB所部署服务的ip地址、端口号;
    44. database: imooc-news #我们需要在MongoDB中,创建imooc-news这个database;
    45. ############################################################
    46. #
    47. # mybatis 配置
    48. #
    49. ############################################################
    50. mybatis:
    51. type-aliases-package: com.imooc.pojo # 所有POJO类所在包路径
    52. mapper-locations: classpath:mapper/*.xml # mapper映射文件
    53. ############################################################
    54. #
    55. # mybatis mapper 配置
    56. #
    57. ############################################################
    58. # 通用 Mapper 配置
    59. mapper:
    60. mappers: com.imooc.my.mapper.MyMapper
    61. not-empty: false # 在进行数据库操作的的时候,判断表达式 username != null, 是否追加 username != ''
    62. identity: MYSQL # 方言,使用的是MySQL
    63. # 分页插件配置
    64. pagehelper:
    65. helperDialect: mysql
    66. supportMethodsArguments: true

    说明:

    (1)文章服务的端口,我们约定为了8001;

    (2)application-dev.yml:

    1. server:
    2. port: 8001
    3. spring:
    4. redis:
    5. database: 0
    6. host: 192.168.***.***
    7. port: 6380
    8. password: *****
    9. # 设置域名,在java代码中获取,这里是资源配置
    10. # 这儿的website和domain-name可以瞎写,只要能做到见名知意就行;
    11. website:
    12. domain-name: imoocnews.com
    13. # dev 开发环境开启mybatis日志
    14. mybatis:
    15. configuration:
    16. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    (3)application-prod.yml:

    1. server:
    2. port: 8001
    3. spring:
    4. redis:
    5. database: 0
    6. host: 192.168.***.***
    7. port: 6380
    8. password: *****
    9. # 设置域名,在java代码中获取,这里是资源配置
    10. # 这儿的website和domain-name可以瞎写,只要能做到见名知意就行;
    11. website:
    12. domain-name: imoocnews.com

    3.logback-spring.xml日志配置文件;

    1. <configuration>
    2. <property name="LOG_HOME" value="e:/logs/imoocNewsLog/server-article"/>
    3. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    4. <encoder>
    5. <pattern>%white(%d{mm:ss.SSS}) %green([%thread]) %cyan(%-5level) %yellow(%logger{36}) %magenta(-) %black(%msg%n)pattern>
    6. <charset>utf8charset>
    7. encoder>
    8. appender>
    9. <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    10. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    11. <fileNamePattern>${LOG_HOME}/service-article.%d{yyyy-MM-dd}.logfileNamePattern>
    12. rollingPolicy>
    13. <encoder>
    14. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%npattern>
    15. encoder>
    16. appender>
    17. <root level="info">
    18. <appender-ref ref="FILE"/>
    19. <appender-ref ref="CONSOLE"/>
    20. root>
    21. configuration>

    4.Application主启动类;

    1. package com.imooc.article;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. import org.springframework.context.annotation.ComponentScan;
    5. import tk.mybatis.spring.annotation.MapperScan;
    6. //@SpringBootApplication(exclude = MongoAutoConfiguration.class)
    7. @SpringBootApplication
    8. @MapperScan(basePackages = "com.imooc.article.mapper")
    9. @ComponentScan(basePackages = {"com.imooc","org.n3r.idworker"})
    10. public class Application {
    11. public static void main(String[] args) {
    12. SpringApplication.run(Application.class, args);
    13. }
    14. }

    说明:

    (1)为了让项目启动时不出问题,最好创建一下mapper包;


    四:【article】文章服务,创建测试用的HelloController,看看项目是否OK;

    (1)install一下整个项目;(2)只启动【article】文章服务;(3)记得使用SwitchHost开启虚拟域名;(4)访问hello测试接口;

    ​​​​​​​

  • 相关阅读:
    手写生产者消费者模型
    Python学习基础笔记六十六——对象的方法
    ubuntu18.4(后改为20.4)部署chatglm2并进行基于 P-Tuning v2 的微调
    k8s的部署管理以及prometheus相关监控
    JavaScript 字符串连接的工作原理——“+”运算符与“+=”运算符
    kotlin修饰符const的含义
    如何规避容器内做Java堆dump导致容器崩溃的问题
    MySQL主从复制+读写分离
    分布式计算实验3 基于PRC的书籍信息管理系统
    windows11系统如何设置锁屏壁纸
  • 原文地址:https://blog.csdn.net/csucsgoat/article/details/126211667