目录
概述
芋道源码微服务新建新的模块及代码生成器使用。主要分三块,建立新的模块,代码生成及运行过程中的问题解决。
实践
新建模块
参考芋道源码本身的架构,新建的工程架构如下图所示,代码生成器也会生成对应的架构,但没有pom.xml这些配置文件,需要自己添加。
代码生成
官方的代码生成器已经很强大,生产环境下,需要根据自己公司业务需求,做对应需求的调整。
配置数据源
先配置数据源,芋道源码会报演示模式,无法进行写操作!
,我是直接调试代码,找到对应的代码,将其注释了,与公司业务无关的,最好慢慢清理掉,使整个框架更简洁。
代码生成
先导入,再编辑,最后预览一下生成的代码。这一步,还是简单的。
拷贝代码
将代码直接拷贝至对应工程,看着无错,但运行时是有问题的。
pom.xml
api工程
<dependencies>
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-common</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<scope>provided</scope> <!-- 设置为 provided,主要是 PageParam 使用到 -->
</dependency>
<!-- 参数校验 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<optional>true</optional>
</dependency>
<!-- RPC 远程调用相关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
biz 工程
<dependencies>
<!-- Spring Cloud 基础 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-spring-boot-starter-env</artifactId>
</dependency>
<!-- 依赖服务 -->
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-module-system-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-module-extract-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- 业务组件 -->
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-spring-boot-starter-biz-data-permission</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-spring-boot-starter-security</artifactId>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-spring-boot-starter-mybatis</artifactId>
</dependency>
<!-- RPC 远程调用相关 -->
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-spring-boot-starter-rpc</artifactId>
</dependency>
<!-- Registry 注册中心相关 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Config 配置中心相关 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Test 测试相关 -->
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-spring-boot-starter-excel</artifactId>
</dependency>
<!-- 监控相关 -->
<dependency>
<groupId>com.fun</groupId>
<artifactId>funcloud-spring-boot-starter-monitor</artifactId>
</dependency>
</dependencies>
其它的
父工程需要引入 芋道源码
依赖管理,ErrorCodeConstants
类需要手动修改。
问题
1.缺少 redis
配置,两种解决方式,一种是提供对应的redis配置,即可解决,另一种,不加载对应的AutoConfig
配置类;2.缺少对应的权限配置类。
redis
权限配置
权限配置,调试及优化后如下
@Configuration(proxyBeanMethods = false, value = "extractSecurityConfiguration")
public class SecurityConfiguration {
@Value("${spring.boot.admin.context-path:''}")
private String adminSeverContextPath;
@Bean("extractAuthorizeRequestsCustomizer")
public AuthorizeRequestsCustomizer authorizeRequestsCustomizer() {
return new AuthorizeRequestsCustomizer() {
@Override
public void customize(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry) {
// Swagger 接口文档
registry.antMatchers("/v3/api-docs/**").permitAll() // 元数据
.antMatchers("/swagger-ui.html").permitAll(); // Swagger UI
// Spring Boot Actuator 的安全配置
registry.antMatchers("/actuator").anonymous()
.antMatchers("/actuator/**").anonymous();
// Druid 监控
registry.antMatchers("/druid/**").anonymous();
// Spring Boot Admin Server 的安全配置
registry.antMatchers(adminSeverContextPath).anonymous()
.antMatchers(adminSeverContextPath + "/**").anonymous();
// // 文件读取
// registry.antMatchers(buildAdminApi("/infra/file/*/get/**")).permitAll();
// TODO 芋艿:这个每个项目都需要重复配置,得捉摸有没通用的方案
// RPC 服务的安全配置
registry.antMatchers(ApiConstants.PREFIX + "/**").permitAll();
}
};
}
}
效果
结束
经过上述步骤后,新建的模块即可运行。
标签:代码生成,spring,boot,funcloud,芋道,源码,fun,com,starter From: https://blog.csdn.net/2301_79691134/article/details/141821834