原先有问题的代码
自定义注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(RateLimiterImportBeanDefinitionRegistrar.class)
public @interface EnableRateLimiter {
/**
* 扫描路径
* @return
*/
boolean proxyTargetClass() default false;
}
注册APC(AutoProxyCreate)
@Configuration
public class RateLimiterImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
Map<String, Object> annotationAttributes = importingClassMetadata.getAnnotationAttributes(EnableRateLimiter.class.getName());
Boolean flag = (Boolean) annotationAttributes.get("proxyTargetClass");
//依赖于Spring底层实现,通常是Spring 内部使用
AopConfigUtils.registerAutoProxyCreatorIfNecessary(registry);
if (flag) {
AopConfig

本文介绍了一种基于自定义注解的限流器实现方案,详细解释了如何通过Spring AOP来完成方法级别的访问频率限制,并解决了实现过程中遇到的问题。
最低0.47元/天 解锁文章
400

被折叠的 条评论
为什么被折叠?



