# fast-dev-boot-starter **Repository Path**: smith123456/fast-dev-boot-starter ## Basic Information - **Project Name**: fast-dev-boot-starter - **Description**: 工具 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-02 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## NoRepeatSubmit 防重复提交 在需要防重复请求的方法添加注解 @NoRepeatSubmit ```java import com.fastDev.limit.NoRepeatSubmit; import org.springframework.web.bind.annotation.RestController; @EnableNoRepeatSubmit public class Application { } @RestController public class Controller { @NoRepeatSubmit public void test() { } } ``` ## LimitRate 限流注解 需要在启动类中加注解开启限流注解 ```java import com.fastDev.limit.EnableLimitRate; import com.fastDev.limit.EnableRedisLimit; import com.fastDev.limit.LimitRate; @EnableLimitRate public class Application { } @RestController public class Controller { @LimitRate public void test() { } } ``` ## 启用日志注解 1.使用EnableLogger注解,配置LogAspectHandler的实现类。 使用EnableLogger注解最好不要和其他注册Bean方式一起使用。 2.在需要记录日志的方法上加注解@Log ### 自定义实现保存日志方法 * 可以集成AbstractLogHandler类 重写里面的方法 ```java import com.fastDev.log.AbstractLogHandler; import com.fastDev.log.Log; import com.fastDev.log.df.Logger; import org.aspectj.lang.ProceedingJoinPoint; public class MyLogHandler extends AbstractLogHandler { @Override public Logger getParam(ProceedingJoinPoint point, Log log, Object result) { return null; } @Override public void save(Logger logger) { } } ``` * 也可以实现LogHandler接口 ```java import com.fastDev.log.Log; import com.fastDev.log.df.Logger; import com.fastDev.log.LogHandler; import org.aspectj.lang.ProceedingJoinPoint; public class MyLogHandler implements LogHandler { @Override public Logger getParam(ProceedingJoinPoint point, Log log, Object result) { return null; } @Override public void save(Logger logger) { } @Override public Object logAround(ProceedingJoinPoint point, Log log) { return null; } } ``` ## Authorization 权限注解 需要在启动类上开启 加注解 ```java import com.fastDev.authorize.EnableGlobalAuthorize; @EnableGlobalAuthorize() public class Application { } ``` 需要设置权限 ```java public class T{ public void t(){ SecurityHolder.getContext().setAuths(auth); } } ``` #安全加密 ## MDEncryptPasswordEncode 需要初始化 ```java import org.springframework.context.annotation.Bean; @Bean public MDEncryptPasswordEncode mDEncryptPasswordEncode(){ return new MDEncryptPasswordEncode(); } ``` ## BCryptPasswordEncode ```java @Bean public BCryptPasswordEncode bCryptPasswordEncode(){ return new BCryptPasswordEncode(); } ``` ## utils ### VerificationCodeGenerator 生成图片验证码类 ## 使用FtpTemplate 需要导入包 ```xml commons-net commons-net ${ftp.version} ``` 使用centos7还需要输入以下命令安装才能连接 ```text 1.确认FTP服务已经安装并正在运行。可以使用以下命令安装并启动FTP服务 sudo yum install vsftpd sudo systemctl start vsftpd sudo systemctl enable vsftpd 2.检查FTP服务的配置文件/etc/vsftpd/vsftpd.conf,确保以下设置允许匿名访问或者正确设置了用户权限 anonymous_enable=NO 防止不登陆就可以访问 3.确认防火墙设置允许FTP端口(默认为21)的通信。可以使用以下命令: sudo firewall-cmd --zone=public --add-port=21/tcp --permanent sudo firewall-cmd --zone=public --add-port=1025-65535/tcp --permanent sudo firewall-cmd --reload 4.建立用户(root账号无法访问ftp) adduser ftpUser passwd ftpUser (ftpPwd) 设置密码 给ftpUser账号 ``` ## 继承动态定时任务 1. 开启定时任务 @EnableTaskScheduler 2. 可以在配置文件中配置 ```yaml task: scheduler: pool-size: 2 remove-on-cancel-policy: true wait-for-tasks-to-complete-on-shutdown: true config-task-params: - task-id: 1 ordinary-class: com.xx.begin.TestService cron: 0/1 * * * * ? # beanName: testService methodName: test2 params: - param-type: string value: 1s - param-type: integer value: 1 ``` 3 也可以实现TaskSchedulerInit接口 ## 注册GlobFilter过滤器方法 1.在继承了GlobFilter类的上面加EnrollGlobFilter注解注册过滤器和放入到容器中 ```java import com.fastDev.filter.GlobFilter; import org.springframework.stereotype.Component; @EnrollGlobFilter public class g extends GlobFilter { } ``` 2.使用spring boot自带的FilterRegistrationBean注册过滤器 ```java import com.fastDev.filter.ExcludePathRequestMatcher; import com.fastDev.filter.GlobFilter; @Bean public FilterRegistrationBean filterRegistrationBean() { GlobFilter globFilter = new GlobFilter(); FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean<>(); filterRegistrationBean.setUrlPatterns(Collections.singleton("/")); filterRegistrationBean.setOrder(1); filterRegistrationBean.setFilter(globFilter); globFilter.setExcludePathRequestMatcher(new ExcludePathRequestMatcher("")); filterRegistrationBean.setName(""); return filterRegistrationBean; } ``` 4.使用GlobFilterScan注册过滤器 配置包扫描 ```java import com.fastDev.filter.GlobFilter; import com.fastDev.filter.anno.GlobFilterScan; @GlobFilterScan("com.fastDev.filter") public class g extends GlobFilter { } ``` 注:如果使用注解需要拦截或过滤地址需要重写 ```java public void config(RegisterGlobFilterConfig config){ config.interceptPath("/*").name(StrUtil.toLowerCaseFirstLetter(this.getClass().getSimpleName())).order(Integer.MAX_VALUE); } ``` ## 使用注解生产统一返回 1、启动类上加EnableResponseModel注解 参数value:可以自己配置同意返回类,若自己定义返回类必须继承AbstractHandlerResponseModelHandler类 将value设置成对应类的class ```java @SpringBootApplication @EnableResponseModel public class DemoApplication { @Autowired private ServletContext servletContext; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 2、在需要返回的类的controller上加注解 @ResponseModel 参数:code 状态码 message:消息提示 使用@Deactivate注解可以使其ResponseModel该注解不生效 ## 使用mybatis可以使用Cipher注解和CipherField注解加密字段 第一步: ```java import com.fastDev.mybatis.CipherInterceptor; import com.fastDev.mybatis.MapperCipherFieldHandler; import org.springframework.context.annotation.Bean; public class config { @Bean public CipherInterceptor cipherInterceptor() { return new CipherInterceptor(new MapperCipherFieldHandler()); } } ``` 1.EntityCipher注解放在实体类上 ```java import com.fastDev.mybatis.DefaultCipherHandler; public class User { //clazz 加解密算法类 //encrypt 是否加密 // decrypt 是否解密 @EntityCipher(clazz = DefaultCipherHandler.class,encrypt = true,decrypt = true) private String name; } ``` 2.MapperCipherField 注解使用在Mapper方法上 ```java public interface UserMapper { @CipherField(value={name},clazz = DefaultCipherHandler.class,encrypt = true,decrypt = true) void saveUser(@Param("user") User user); } ```