# Elab-Spring 该项目用来针对一些Spring的拓展做一些统一的封装使得在使用上非常方便 这里只是大概介绍一下功能的使用。 直接使用的话 ```java // 如果有相应的配置文件参数,需要将配置文件注入到里面来 @PropertySource(value = {"classpath:database.properties","classpath:autoConfig.properties"},encoding = "UTF-8") // 直接导入相关的配置类 @Import({SpringCommonConfig.class, DataSourceConfigBean.class, JdbcBeanConfig.class, TransactionConfigBean.class}) ``` ## 功能介绍 #### SpringCommonConfig:基本的Spring相关的配置 封装了ClientHttpRequestFactory、RestTemplate、PropertyPlaceholderConfigurer等类. 有一些可变的参数可以再配置文件中指定,这里面的数据都是默认值,可以不填写 ```perl # httpClient连接数 httpClient.connect.timeOut=120000 # httpClient超时时间 httpClient.read.timeOut=120000 # 读取property配置文件的路径 spring.resources.path=classpath:*.properties ``` #### DataSourceConfigBean : 数据源配置 ```perl default.driverClassName= default.url= default.username= default.password= default.filters= default.initialSize=5 default.minIdle=10 default.maxActive=50 ``` #### JdbcBeanConfig : JDBC封装类配置 可选配置 ```perl # jdbc的sql文件目录 jdbc.config.path=sql # dao接口层扫描 jdbc.config.scan=com.elab.** ``` #### TransactionConfigBean : 事物配置 针对事物相关的类进行配置 > 这里需要注意的是一般 TransactionConfigBean、JdbcBeanConfig 依赖 DataSourceConfigBean 所以使用的时候,需要将这三个类都一次性导入 #### SpringMvcConfig : 基本的SpringMVC容器相关的配置 封装了MultipartResolver等相关配置 ```perl # 文件上传大小配置 mvc.multipartResolver.MaxUploadSize=10485760 ``` #### CommonException : 全局异常定义 直接注入就拥有全局异常功能 #### LogResponseBodyAdvice : 日志id作为结果集返回 直接注入拥有全局返回日志id的功能 #### SwaggerConfigBean : api对象配置 ``` #是否开启swagger swagger.enable=必填 # controller路径 swagger2.basePackage=必填 # api的标题 swagger2.title=必填 # 描述 swagger2.description=必填 # 团队服务的URL swagger2.termsOfServiceUrl=必填 # 许可证地址 swagger2.licenseUrl=必填 # 版本号 swagger2.version=必填 ``` #### RestTemplateUtils - 新增IRestFallback回调接口 - DefaultRestFallBack 默认的回调 : 一旦请求出现异常,则将该次请求数据记录到`mng_http_failure_data`表中 > 如果业务有特殊处理,可以实现该接口去覆盖DefaultRestFallBack类的实现。 ```sql CREATE TABLE `mng_http_failure_data` ( `id` int(11) NOT NULL AUTO_INCREMENT, `url` varchar(200) DEFAULT NULL COMMENT '请求路径', `req_method` varchar(10) DEFAULT NULL COMMENT '请求方式 GET/POST', `req_body` text COMMENT '请求参数', `res_body` text COMMENT '返回结果', `header_body` text COMMENT '请求头信息', `req_retry` int(11) DEFAULT NULL COMMENT '请求重试次数', `req_status` int(11) DEFAULT NULL COMMENT '请求状态 -1失败 1成功 ', `cat_id` varchar(50) DEFAULT NULL COMMENT '链路编号', `error_msg` varchar(500) DEFAULT NULL, `status` int(11) DEFAULT NULL COMMENT '状态:1 有效 -1 无效', `created` datetime DEFAULT NULL COMMENT '创建时间', `updated` datetime DEFAULT NULL COMMENT '修改时间', `creator` varchar(20) DEFAULT NULL COMMENT '创建者', `updator` varchar(20) DEFAULT NULL COMMENT '修改者', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='http故障数据记录'; ``` **如何应用到业务中** 1. 配置类 ```java @Bean public IRestFallback restFallback() { DefaultRestFallBack restFallBack = new DefaultRestFallBack(); return restFallBack; } @Bean public RestTemplateUtils restTemplateUtils(@Autowired RestTemplate restTemplate) { RestTemplateUtils restTemplateUtils = new RestTemplateUtils(); restTemplateUtils.setRestTemplate(restTemplate); // 将默认的配置类加入到其中 restTemplateUtils.setRestFallback(restFallback()); return restTemplateUtils; } ``` 具体使用: ```java // 默认采用的失败回调 -> DefaultRestFallBack String post = restTemplateUtils.post(url, jsonObject, String.class); // 自定义采用的失败回调 --> 实现IRestFallback接口 = MyRestFallBack String post = restTemplateUtils.post(url, jsonObject, String.class, new MyRestFallBack()); ```