2. 创建子工程base
作用:bese是微服务的一个通用配置
- 创建子工程base,创建步骤和上面的common相同,创建成功后注意检查父工程pom中的标签。
2. 添加子工程base的相关依赖
<description>微服务通用配置</description> <dependencies> <!--引用 common 依赖--> <dependency> <groupId>com.wz.common</groupId> <artifactId>wz-test-project-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </dependency> <!--swagger ui--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> </dependency> <!-- spring boot redis缓存引入 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 缓存连接池--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <!--JWT依赖--> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> </dependency> <!--服务发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--服务调用--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!--服务熔断--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <!-- json解析 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </dependency> </dependencies>
3. 创建包,添加通用配置类
3. 创建子工程core
作用:core是整个项目的核心模块,用于存放项目整个项目的核心业务
- 创建步骤,还是一样的。
2.修改pom文件加入相关依赖
<description>核心微服务模块</description> <dependencies> <!--引用 common 依赖--> <dependency> <groupId>com.wz.common</groupId> <artifactId>wz-test-project-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> <!--mybatis-plus 代码生成器--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> </dependency> <!-- Mybatis Plus 代码生成器模板引擎, --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> </dependency> <!--Alibaba读写Excel依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> </dependency> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> </dependency> <!-- spring boot redis缓存引入 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 缓存连接池--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <!-- redis 存储 json序列化 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> </dependency> </dependencies> <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 --> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
- 因为是核心微服务,所以我们需要配置日志,和数据库等链接信息。
- 这里我们在
resources
目录下创建,application.yml
和logback-spring.xml
配置文件,并编写相关的配置。
- application.yml,相关配置
server: port: 8110 #服务端口 spring: profiles: active: dev #环境设置 application: name: 微服务名称 #服务名 datasource: #mysql数据库连接 type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: 链接数据库的url?serverTimezone=GMT%2B8&characterEncoding=utf-8 username: 用户名 password: 密码 #spring: redis: host: redes的ip地址 port: 端口号 database: 0 #password: 默认为空 timeout: 3000ms #过期时间 lettuce: pool: max-active: 20 #最大连接数,负值表示没有限制,默认8 max-wait: -1 #最大阻塞等待时间,负值表示没限制,默认-1 max-idle: 8 #最大空闲连接,默认8 min-idle: 0 #最小空闲连接,默认0 cloud: nacos: discovery: server-addr: nacos的ip+端口 # nacos服务地址 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #配置控制台日志 mapper-locations: classpath:com/mzc/iou/core/mapper/xml/*.xml #防止xml文件丢失 ##设置日志级别 #logging: # level: # root: ERROR
- logback-spring.xml,相关配置
<?xml version="1.0" encoding="UTF-8"?> <!--springboot内部使用Logback作为日志实现的框架 logback-spring.xml(默认日志文件的名字)--> <!--日志配置的根节点--> <configuration> <!--上下文名称默认default--> <contextName>wz</contextName> <!-- 日志的输出目录 --> <property name="log.path" value="日志的打印位置/core" /> <!--控制台日志格式:彩色日志--> <!-- magenta:洋红 --> <!-- boldMagenta:粗红--> <!-- cyan:青色 --> <!-- white:白色 --> <!-- magenta:洋红 --> <property name="CONSOLE_LOG_PATTERN" value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/> <!--文件日志格式--> <property name="FILE_LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n" /> <!--编码--> <property name="ENCODING" value="UTF-8" /> <!-- 控制台日志 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> </appender> <!-- 文件日志 --> <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 要区别于其他的appender中的文件名字 --> <file>${log.path}/log-rolling.log</file> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> <!-- 设置滚动日志记录的滚动策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 日志归档路径以及格式 --> <fileNamePattern>${log.path}/info/log-rolling-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!--归档日志文件保留的最大数量--> <maxHistory>3</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- 开发环境和测试环境 --> <springProfile name="dev,test"> <logger name="com.mzc" level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="ROLLING_FILE" /> </logger> </springProfile> <!-- 生产环境 --> <springProfile name="prod"> <logger name="com.mzc" level="ERROR"> <appender-ref ref="CONSOLE" /> <appender-ref ref="ROLLING_FILE" /> </logger> </springProfile> </configuration>
- 创建核心模块需要用到的包
3. 创建子工程gatway
作用:微服务网关,每个请求过来都需要通过网关分发到不同的模块。
- 创建方式相同
- 添加相关依赖
<description>核心微服务网关</description> <dependencies> <!-- 网关 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!--服务注册--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
- 编写配置文件,实现动态路由和日志打印。
- 和上面的步骤一致
application.yml
server: port: 80 # 服务端口 spring: profiles: active: dev # 环境设置 application: name: 服务名称 # 服务名 cloud: nacos: discovery: server-addr: nacos的ip地址+端口号 # nacos服务地址 gateway: discovery: locator: enabled: true # gateway可以发现nacos中的微服务,并自动生成转发路由 routes: - id: 核心微服务名称 #路由的ID,没有固定规则但要求唯一,建议配合服务名 uri: lb://核心微服务名称 #匹配后提供服务的路由地址 predicates: - Path=/*/core/** #断言,路径相匹配的进行路由
- logback-spring.xml,相关配置
<?xml version="1.0" encoding="UTF-8"?> <!--springboot内部使用Logback作为日志实现的框架 logback-spring.xml(默认日志文件的名字)--> <!--日志配置的根节点--> <configuration> <!--上下文名称默认default--> <contextName>wz</contextName> <!-- 日志的输出目录 --> <property name="log.path" value="日志打印位置/gateway" /> <!--控制台日志格式:彩色日志--> <!-- magenta:洋红 --> <!-- boldMagenta:粗红--> <!-- cyan:青色 --> <!-- white:白色 --> <!-- magenta:洋红 --> <property name="CONSOLE_LOG_PATTERN" value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/> <!--文件日志格式--> <property name="FILE_LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n" /> <!--编码--> <property name="ENCODING" value="UTF-8" /> <!-- 控制台日志 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> </appender> <!-- 文件日志 --> <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 要区别于其他的appender中的文件名字 --> <file>${log.path}/log-rolling.log</file> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> <!-- 设置滚动日志记录的滚动策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 日志归档路径以及格式 --> <fileNamePattern>${log.path}/info/log-rolling-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!--归档日志文件保留的最大数量--> <maxHistory>3</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- 开发环境和测试环境 --> <springProfile name="dev,test"> <logger name="com.mzc" level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="ROLLING_FILE" /> </logger> </springProfile> <!-- 生产环境 --> <springProfile name="prod"> <logger name="com.mzc" level="ERROR"> <appender-ref ref="CONSOLE" /> <appender-ref ref="ROLLING_FILE" /> </logger> </springProfile> </configuration>
- 创建包编写启动类,与跨域相关配置。
四. 总结
到这里整个项目架构的搭建已经基本完成,可以使用代码生成器生成后进行编码了,后续如果需要使用SMS,OSS等相功能,可以新建模块进行对应的配置。这里的配置类并没有演示大家如果有需要的话可以去我主页的资源中进行下载整个完整的架构,并且附带使用教程和博主一对一指导。
好了,一键三连加关注!感谢大家观看。