Main.java.ProjectName
|_ auth
|_ common
|_ config
|_ filter
|_ generated
|_ repository
|_ service
|_ controller
以上是模拟的项目快速开发原型骨架。auth单独将登录认证的配置和接口做出了整合;generate中存放根据接口文档自动生成的一些增删改查分页,条件查询的基本操作。
Common包
constant
用于存放一些项目全局使用的常量:
public static final String UTF8 = "UTF-8";
public static final String GBK = "GBK";
public static final String WWW = "www.";
public static final String HTTP = "http://";
public static final String HTTPS = "https://";
public static final String SUCCESS = "0";
public static final String FAIL = "1";
这只是一个简写,这些常量用于字符拼接、项目中常用的常量名、对一些工具名的封装
特别地:
public static final String DATE_FORMAT_Y_M_D_H_MIN = "yyyy-MM-dd HH:mm";
public static final List<String> DOC_TYPE = Arrays.asList("doc", "docx", "pdf", "xls", "xlsx", "html", "txt");
public static final String IMAGE_SLASH_PREFIX_LOWER = "image/";
//...项目中常用的常量名
enums
这是一个枚举类的包,主要用于存放枚举类。其存在的意义是避免出现魔法数(albb java开发手册),此外API内容也可以放入enum中。
@Getter
public enum AbilityType {
ENUM1("enum1", "枚举1"),
ENUM2("enum2", "枚举2");
private String code;
private String info;
AbilityType(String code, String info) {
this.code = code;
this.info = info;
}
}
//这是一个高德地图的三方库
@Getter
@AllArgsConstructor
public enum AmapApi {
GEO_CODE("https://restapi.amap.com/v3/geocode/geo", HttpMethod.GET, "获取地理编码"),
REVERSE_GEO_CODE("https://restapi.amap.com/v3/geocode/regeo", HttpMethod.GET, "获取逆地理编码"),
DIRECTION_DRIVING("https://restapi.amap.com/v3/direction/driving", HttpMethod.GET, "驾车路径规划"),
;
private String url;
private HttpMethod method;
private String info;
}
一般都会自带get方法和构造方法
使用场景:
- return一个信息
- set一个值
- 抛出异常值
- 字符串equals(匹配)
- case后的判断条件
**主要描述的内容性质:**对象状态、日常事务、类型(用户类型、文档类型)、优先级(LOW, MEDIUM, HIGH)、方向、文件权限(READ, WRITE, EXECUTE)、方式(支付方式)、程度难度(EASY, MEDIUM, HARD, EXPERT)
**优点:**易读性和可维护性、类型更安全、可限定的值集合、避免魔法数值、增强的编译器支持、适用于状态和选项的表示。
**缺点:**不适用于动态变化的数据、不适用于大型数据集合、缺乏扩展性、不支持继承
出处: https://blog.csdn.net/qq_61635026/article/details/131621143
Result
Result类通常用于封装API的统一响应格式用于规范请求响应的内容,可以写出泛型的形式或者继承序列化。
public class CommonResult<T> {
private int code;
private String message;
private T data;
public CommonResult() {}
public CommonResult(int code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
// Static factory methods
// ...
}
例如响应失败:
public static <T> CommonResult<T> failed(Integer code, String message) {
return new CommonResult<>(code, message, null);
}
utils
一般utils主要存放以下内容:
- 字符串处理工具类(StringUtils):字符串判空、非空判断;字符串拆分、合并;字符串截取、替换;格式化字符串
- 日期和时间工具类(DateUtils/TimeUtils):日期格式化、解析;日期加减操作;计算两个日期之间的差异;转换为各种时间单位(如秒、分钟、小时、天)
- 集合工具类(CollectionUtils):集合判空、非空判断;集合的交集、并集、差集;集合过滤、转换;集合排序
- 文件操作工具类(FileUtils):文件读写操作;文件复制、移动、删除;文件压缩、解压;获取文件属性
- 网络操作工具类(NetUtils):URL编码、解码;IP地址处理;HTTP请求发送;检查网络连接
- JSON处理工具类(JsonUtils):JSON字符串与对象的互相转换;JSON格式化、解析;深层次的JSON节点处理
- 加密解密工具类(EncryptUtils):MD5、SHA等哈希算法;对称加密、非对称加密;Base64编码、解码
- 数学工具类(MathUtils):常见数学计算;随机数生成;精度控制
- 反射工具类(ReflectionUtils):动态调用方法;动态获取和设置属性值;获取类和方法的详细信息
- 系统工具类(SystemUtils):获取系统环境变量;获取系统属性;JVM相关信息获取
httpUtils:
1、先完成Logger和RestTemplate的初始化
2、创建静态初始化块(设置SimpleClientHttpRequestFactory以设置连接超时时间读取超时时间)
3、发送不同类型请求的方法:
sendRequest(String url, HttpMethod method)
: 发送不带请求体的请求。sendRequest(String url, HttpMethod method, Object param)
: 发送带请求体的请求,并在请求头中添加orgCode
。sendRequest(String url, HttpMethod method, HttpHeaders headers)
: 发送带自定义请求头的请求。sendRequest(String url, HttpMethod method, HttpHeaders headers, Object obj)
: 发送带自定义请求头和请求体的请求。sendRequest(String url, HttpMethod method, String fileName, InputStream inputStream)
: 发送文件上传请求。sendRequest(String url, List<File> files)
: 发送多个文件上传的请求。
Config
在Spring Boot应用程序中,config
包通常用于存放各种配置类,这些配置类用于配置Spring应用上下文中的不同组件和行为。常见的配置类包括以下几类:
- 数据库配置类:
DataSourceConfig
:配置数据源(DataSource),包括连接池的配置,如HikariCP、DBCP等。JpaConfig
:配置JPA相关属性,如实体管理器、事务管理器等。
- 安全配置类:
SecurityConfig
:配置Spring Security,定义安全策略、用户认证和授权规则。OAuth2Config
:配置OAuth2相关的安全策略。
- Web配置类:
WebMvcConfig
:配置Spring MVC相关的设置,如视图解析器、消息转换器、跨域资源共享(CORS)等。WebSocketConfig
:配置WebSocket相关的设置。
- 缓存配置类:
CacheConfig
:配置缓存管理器和缓存策略,如使用Redis、EhCache等。
- 消息队列配置类:
RabbitMQConfig
:配置RabbitMQ相关属性。KafkaConfig
:配置Kafka相关属性。
- 定时任务配置类:
SchedulerConfig
:配置定时任务调度器,如使用@Scheduled
注解的任务调度。
- 国际化配置类:
LocaleConfig
:配置国际化资源文件和区域解析器。
- Swagger配置类:
SwaggerConfig
:配置Swagger用于API文档生成。
- 其他第三方服务配置类:
EmailConfig
:配置邮件服务。FileStorageConfig
:配置文件存储服务,如本地存储、云存储(如AWS S3)。
- 自定义属性配置类:
AppConfig
:读取和配置自定义的应用属性,通过@ConfigurationProperties
注解。
- 异步处理配置类:
AsyncConfig
:配置异步任务执行器(Executor),定义异步任务线程池等。
- 日志配置类:
LogConfig
:配置日志记录器的属性,如Logback、Log4j2等
filter
过滤器(Filter)是一种在请求到达Servlet之前或响应离开Servlet之后进行处理的组件。它可以用于各种功能,如身份验证、日志记录、压缩、解压缩等。常见用途:
- 请求和响应日志记录:记录每个请求和响应的详细信息。
- 身份验证和授权:检查用户身份和权限。
- 输入验证:验证请求参数和数据的完整性和正确性。
- 数据压缩:对响应数据进行压缩以减少带宽使用。
- 跨域资源共享(CORS):处理跨域请求。
比如
- HiddenHttpMethodFilter:允许通过表单提交方式模拟HTTP的DELETE、PUT等方法。
- CharacterEncodingFilter:设置请求和响应的字符编码。
- CorsFilter:处理跨域资源共享(CORS)请求。
- DelegatingFilterProxy:委托给Spring应用上下文中的一个Spring Bean来处理过滤逻辑,通常用于Spring Security。
Generate
利用接口文档的配置内容,将一些接口的增删改查、分页操作、条件查询等操作快速生成
- CorsFilter:处理跨域资源共享(CORS)请求。
- DelegatingFilterProxy:委托给Spring应用上下文中的一个Spring Bean来处理过滤逻辑,通常用于Spring Security。
Generate
利用接口文档的配置内容,将一些接口的增删改查、分页操作、条件查询等操作快速生成
[外链图片转存中…(img-aq51FZ8W-1721703587728)]