说明:
(1)本篇博客合理性说明:
● 在【2:第一章:项目简介:2:项目演示;】中,可知我们的项目有一部分是"管理平台(或称运营中心)";这其实,就是该项目的后台的管理系统;
● 在【9:第二章:架构后端项目:5:【聚合工程】简介;】、【3:第一章:项目简介:3:项目微服务架构图;】中,可知我们会把管理服务单独抽出来;该项目的后台管理部分,都会放在这个模块中去做的;
● 所以,本篇博客就是创建【imooc-news-dev-service-admin】管理服务,这个模块;
(2) 附加:如果在启动Tomcat和【admin】服务时,遇到端口被占用的情况;可以参考【tomcat运行时候出现java.net.BindException: Address already in use: JVM_Bind错误解决方法】去看看端口是否被占用,如果被占用则可以尝试关闭占用程序的进程;
目录
二:创建子工程【imooc-news-dev-service-admin】,admin管理服务模块;
3.logback-spring.xml:配置logback日志组件;
四:【admin】管理服务,创建测试用的HelloController,看看项目是否OK;
一:【admin管理服务】部分,内容概述;
(1)构建admin管理服务;
(2)文章分类功能;
(3)友情链接管理功能;
(4)用户账号管理;
(5)文章内容人工审核;
● 等后面,开发完"用户发表文章"功能后,再来开发这个功能;
● 用户发表完文章后,会先有一个自动审核,如果自动审核没通过就会进行人工审核;
(6)admin管理人员账号;
● 后台admin管理中心,也是需要有账户才能登录的;只是,我们不会在后台开发注册功能的;因为,后台的管理员账号,一般都是人工去分配的;即,一开始的时候,我们会有一个管理员账号,然后这个管理员账号可以创建几个管理员账号,以给其他人使用;
● 这儿也会涉及到人脸登录;一开始,会让用户的人脸入库,然后后续登录的时候,可以使用人脸登录;
二:创建子工程【imooc-news-dev-service-admin】,admin管理服务模块;
三:【admin】管理服务,初准备;
1.pom.xml;
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>imooc-news-dev</artifactId> <groupId>com.imooc</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>imooc-news-dev-service-admin</artifactId> <dependencies> <!--在admin这个微服务中,引入api接口工程的依赖; 即【admin】这个微服务,需要依赖于【api】--> <dependency> <groupId>com.imooc</groupId> <artifactId>imooc-news-dev-service-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>
说明:
(1)暂时只引入【api】接口工程的依赖即可;
2.application*.yml;
(1)application.yml;
############################################################ # # admin管理微服务 # web访问端口号 约定:8005 # ############################################################ server: # port: 8005 tomcat: uri-encoding: UTF-8 max-swallow-size: -1 # tomcat默认大小2M,超过2M的文件不会被捕获,需要调整此处大小为100MB或者-1即可 ############################################################ # # 配置项目信息 # ############################################################ spring: profiles: active: dev # yml中“配置文件”的环境配置,dev表示开发环境,test表示测试环境,prod表示生产环境; application: name: service-admin jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 datasource: # 数据源的相关配置 type: com.zaxxer.hikari.HikariDataSource # 数据源类型:HikariCP driver-class-name: com.mysql.jdbc.Driver # mysql驱动 url: jdbc:mysql://localhost:3308/imooc-news-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true username: root password: ***** hikari: connection-timeout: 30000 # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒 minimum-idle: 5 # 最小连接数 maximum-pool-size: 20 # 最大连接数 auto-commit: true # 自动提交(此属性控制从池返回的连接的默认自动提交行为) idle-timeout: 600000 # 连接超时的最大时长(毫秒),超时则被释放(retired),默认:10分钟 pool-name: DateSourceHikariCP # 连接池名字 max-lifetime: 1800000 # 连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms connection-test-query: SELECT 1 ############################################################ # # mybatis 配置 # ############################################################ mybatis: type-aliases-package: com.imooc.pojo # 所有POJO类所在包路径 mapper-locations: classpath:mapper/*.xml # mapper映射文件 ############################################################ # # mybatis mapper 配置 # ############################################################ # 通用 Mapper 配置 mapper: mappers: com.imooc.my.mapper.MyMapper not-empty: false # 在进行数据库操作的的时候,判断表达式 username != null, 是否追加 username != '' identity: MYSQL # 方言,使用的是MySQL # 分页插件配置 pagehelper: helperDialect: mysql supportMethodsArguments: true
说明:
(1)admin管理服务的端口是8005,这是前后端约定好的;
(2)这儿的内容,以前就介绍过;如有需要,可以参考:
● 【10:第二章:架构后端项目:6:创建子工程(或称模块工程、子模块);(包括common通用工程,model工程,api接口工程,user用户模块)】;
● 【16:第二章:架构后端项目:12:配置mybatis;(在【imooc-news-dev-service-user】这个微服务子工程上,配置)】等文章;
(2)application-dev.yml;
server: port: 8005 spring: redis: database: 0 host: 192.168.***.*** port: 6380 password: 12345 # 设置域名,在java代码中获取,这里是资源配置 # 这儿的website和domain-name可以瞎写,只要能做到见名知意就行; website: domain-name: imoocnews.com # dev 开发环境开启mybatis日志 mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
说明:
(1)这儿的内容,以前就介绍过;如有需要,可以参考:
● 【20:第三章:开发通行证服务:3:在程序中,打通redis服务器;】;
● 【28:第三章:开发通行证服务:11:在配置文件中定义属性,然后在代码中去获取;】;
● 【38:第三章:开发通行证服务:21:利用AOP,实现【监控方法执行时间,并打印相关日志】的需求;(对于Mybatis)在控制台打印SQL语句;】;
(3)application-prod.yml;
server: port: 8005 spring: redis: database: 0 host: 192.168.223.130 port: 6380 password: 12345 # 设置域名,在java代码中获取,这里是资源配置 # 这儿的website和domain-name可以瞎写,只要能做到见名知意就行; website: domain-name: imoocnews.com
3.logback-spring.xml:配置logback日志组件;
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 指定日志文件的存储地址,使用绝对路径 --> <!-- <property name="LOG_HOME" value="/workspaces/logs/imooc-news-dev/service-admin"/>--> <property name="LOG_HOME" value="e:/logs/imoocNewsLog/server-admin"/> <!-- Console 输出设置 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%white(%d{mm:ss.SSS}) %green([%thread]) %cyan(%-5level) %yellow(%logger{36}) %magenta(-) %black(%msg%n)</pattern> <charset>utf8</charset> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <fileNamePattern>${LOG_HOME}/service-admin.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!--<logger name="org.apache.ibatis.cache.decorators.LoggingCache" level="DEBUG" additivity="false">--> <!--<appender-ref ref="CONSOLE"/>--> <!--</logger>--> <root level="info"><!--因为debug的日志信息,太多了,所以我么把输出的日志级别设置为了info--> <appender-ref ref="FILE"/> <appender-ref ref="CONSOLE"/> </root> </configuration>
说明:
(1)可以参考【43:第四章:开发文件服务:4:创建子工程【imooc-news-dev-service-files】,文件服务模块;】,进行对比;这儿只修改了两个地方:
4.Application主启动类;
package com.imooc.admin; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import tk.mybatis.spring.annotation.MapperScan; @SpringBootApplication @MapperScan(basePackages = "com.imooc.admin.mapper") @ComponentScan(basePackages = {"com.imooc","org.n3r.idworker"}) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
说明:
(1)
四:【admin】管理服务,创建测试用的HelloController,看看项目是否OK;
(1)先全局install一下整个项目;
(2)启动【admin】服务的主启动类;
(3)记得要打开SwitchHost开启虚拟域名映射;
……………………………………………………
(4)通过浏览器,访问/hello接口;
(5)附加:如果在启动Tomcat和【admin】服务时,遇到端口被占用的情况;可以参考【tomcat运行时候出现java.net.BindException: Address already in use: JVM_Bind错误解决方法】去看看端口是否被占用,如果被占用则可以尝试关闭占用程序的进程;
● 由于Tomcat的shutdown端口为8005;而我们的【admin】管理服务的端口也设为了8005;所以,为了避免冲突,自己将Tomcat的shutdown端口改为了2724;
● 可以参考【Tomcat的shutdown端口安全处理】;
●【由Tomcat 8005端口想到的...】这篇文章应该也不错,自己还没看;