创建媒资管理工程,分为三个子模块
learning-online-content ├── learning-online-content-api ├── learning-online-content-model └── learning-online-content-service
|
创建工程结构
在learning-online-content-model
模块的pom文件中添加如下依赖:
pom.xml<dependencies> <dependency> <groupId>com.swx</groupId> <artifactId>learning-online-base</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies>
|
在learning-online-content-service
模块的pom文件中添加如下依赖:
pom.xml<dependencies> <dependency> <groupId>com.swx</groupId> <artifactId>learning-online-content-model</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.swx</groupId> <artifactId>learning-online-message-sdk</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifactId> </dependency> <dependency> <groupId>io.github.openfeign.form</groupId> <artifactId>feign-form</artifactId> <version>3.8.0</version> </dependency> <dependency> <groupId>io.github.openfeign.form</groupId> <artifactId>feign-form-spring</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> </dependencies>
|
在learning-online-content-api
模块的pom文件中添加如下依赖:
pom.xml<dependencies> <dependency> <groupId>com.swx</groupId> <artifactId>learning-online-content-service</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-oauth2</artifactId> </dependency> </dependencies>
|
创建启动类,在learning-online-content-api
工程的com.swx.content
包下创建启动类ContentApplication
,内容如下:
ContentApplication@SpringBootApplication @EnableTransactionManagement @EnableFeignClients(basePackages = {"com.swx.content.client"}) public class ContentApplication { public static void main(String[] args) { SpringApplication.run(ContentApplication.class, args); } }
|
项目配置信息,在learning-online-content-api
工程的resources
下创建bootstrap.yml
bootstrap.ymlspring: application: name: content-api cloud: nacos: discovery: server-addr: xxx.xxx.xxx.xxx:8848 namespace: learning-online-dev group: learning-online-project config: server-addr: xxx.xxx.xxx.xxx:8848 namespace: learning-online-dev group: learning-online-project file-extension: yaml refresh-enabled: true extension-configs: - data-id: content-service-${spring.profiles.active}.yaml group: learning-online-project refresh: true shared-configs: - data-id: logging-${spring.profiles.active}.yaml group: learning-online-common refresh: true - data-id: freemarker-config-${spring.profiles.active}.yaml group: learning-online-common refresh: true - data-id: feign-${spring.profiles.active}.yaml group: learning-online-common refresh: true - data-id: redis-${spring.profiles.active}.yaml group: learning-online-common refresh: true profiles: active: dev
|
日志配置,在learning-online-content-api
工程的resources
下创建log4j2-dev.xml
log4j2-dev.xml<?xml version="1.0" encoding="UTF-8"?> <Configuration monitorInterval="180" packages=""> <properties> <property name="logdir">logs</property> <property name="PATTERN">%date{YYYY-MM-dd HH:mm:ss,SSS} %level [%thread][%file:%line] - %msg%n%throwable</property> </properties> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="${PATTERN}"/> </Console>
<RollingFile name="ErrorAppender" fileName="${logdir}/error.log" filePattern="${logdir}/$${date:yyyy-MM-dd}/error.%d{yyyy-MM-dd-HH}.log" append="true"> <PatternLayout pattern="${PATTERN}"/> <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> </RollingFile>
<RollingFile name="DebugAppender" fileName="${logdir}/info.log" filePattern="${logdir}/$${date:yyyy-MM-dd}/info.%d{yyyy-MM-dd-HH}.log" append="true"> <PatternLayout pattern="${PATTERN}"/> <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> </RollingFile> <Async name="AsyncAppender" includeLocation="true"> <AppenderRef ref="ErrorAppender"/> <AppenderRef ref="DebugAppender"/> </Async> </Appenders> <Loggers>
<logger name="cn.itcast.wanxinp2p.consumer.mapper" level="DEBUG"> </logger>
<logger name="springfox" level="INFO"> </logger> <logger name="org.apache.http" level="INFO"> </logger> <logger name="com.netflix.discovery" level="INFO"> </logger> <logger name="RocketmqCommon" level="INFO" > </logger> <logger name="RocketmqRemoting" level="INFO" > </logger> <logger name="RocketmqClient" level="WARN"> </logger>
<logger name="org.dromara.hmily" level="WARN"> </logger>
<logger name="org.dromara.hmily.lottery" level="WARN"> </logger>
<logger name="org.dromara.hmily.bonuspoint" level="WARN"> </logger> <Root level="DEBUG" includeLocation="true"> <AppenderRef ref="AsyncAppender"/> <AppenderRef ref="Console"/> <AppenderRef ref="DebugAppender"/> </Root> </Loggers> </Configuration>
|
基础代码
实体类
使用代码生成工具生成lo_content
表的实体类,将其拷贝到learning-online-content-model
工程的com.swx.content.model.po
包下,暂时所需实体类如下:
- CourseBase.java
- CourseCategory.java
- CourseMarket.java
- CoursePublish.java
- CoursePublishPre.java
- CourseTeacher.java
- Teachplan.java
- TeachplanMedia.java
Mapper层
将代码生成的所有Mapper.java文件拷贝到learning-online-content-service
工程下的com.swx.content.mapper
包下。
将代码生成的所有Mapper.xml文件拷贝到learning-online-content-service
工程下的resources/mapper
目录下。
Service层
将代码生成的所有Service和ServiceImpl文件拷贝到learning-online-content-service
工程下的com.swx.content.service
包下。