96SEO 2026-02-19 18:28 18
本节来了解一下拦截器高级特性拦截器的重复使用和属性成员官网说明https://cn.quarkus.io/guides/cdi-reference#repeatable-interceptor-bindings。

拦截器自己是个注解而注解是有属性的所以我们时可以在自定义的拦截器注解中添加属性成员的这样在拦截器使用的时候有更多扩展空间。
注意很重要quarkus对属性成员使用时的限制是这些属性成员必须是要被Nonbinding注解所标注的否则在使用有设置属性的拦截器时该拦截器功能不会生效。
Injection中的自定义注解以标记不影响注解唯一性的属性。
换句话说当你使用
创建自定义注解并将其应用于拦截器时默认情况下所有属性都参与注解的唯一性判断。
这意味着如果两个注解的属性值不同它们将被视为不同的注解。
有时你可能希望某些属性不影响注解的唯一性。
这时你就可以使用
注解这些属性使其在比较注解时被忽略。
当你创建自定义注解并在拦截器上使用时如果该注解有属性且这些属性未被标记为
Nonbinding这些属性将会影响注解的唯一性判断。
这意味着拦截器上使用的注解和方法上使用的注解必须完全一致包括所有属性的值否则拦截器不会生效。
在自定义注解的属性上添加
注解使这些属性不影响注解的唯一性判断。
这样拦截器上使用的注解和方法上使用的注解可以被认为是相同的即使它们的属性值不同这样拦截器就会生效。
javax.enterprise.util.Nonbinding;
javax.interceptor.InterceptorBinding;
java.lang.annotation.*;InterceptorBinding
Retention(RetentionPolicy.RUNTIME)
sms表示短信email表示邮件*/NonbindingString
允许在同一位置重复使用同一个注解这是java注解的通用功能并非quarkus独有但是在quarkus中使用时有些需要注意的限制。
可以作用在方法上不能作用在类上不能作用在stereotypes上
com.bolingcavalry.interceptor.define;import
javax.enterprise.util.Nonbinding;
javax.interceptor.InterceptorBinding;
java.lang.annotation.*;InterceptorBinding
Repeatable(SendMessage.SendMessageList.class)
Retention(RetentionPolicy.RUNTIME)
sms表示短信email表示邮件*/NonbindingString
ElementType.METHOD})Retention(RetentionPolicy.RUNTIME)interface
要求设计一个拦截器名为SendMessage功能是对外发送通知通知的方式有短信和邮件两种具体用哪种是可以通过拦截器属性设置的。
有个SendMsg的普通接口此接口有三个实现类SendMsgA、SendMsgB、SendMsgC这些实现类都是bean代码如下
用SendMessage拦截器拦截SendMsgA通知类型是短信用SendMessage拦截器拦截SendMsgB通知类型是邮件用SendMessage拦截器拦截SendMsgC通知类型是短信和邮件都发送
javax.enterprise.util.Nonbinding;
javax.interceptor.InterceptorBinding;
java.lang.annotation.*;InterceptorBinding
Repeatable(SendMessage.SendMessageList.class)
Retention(RetentionPolicy.RUNTIME)
sms表示短信email表示邮件*/NonbindingString
ElementType.METHOD})Retention(RetentionPolicy.RUNTIME)interface
com.xxx.interceptor.impl;import
com.xxx.interceptor.SendMessage;
com.xxx.interceptor.TrackParams;
io.quarkus.arc.runtime.InterceptorBindings;
javax.interceptor.AroundInvoke;
javax.interceptor.InvocationContext;
java.lang.annotation.Annotation;
io.quarkus.arc.ArcInvocationContext.KEY_INTERCEPTOR_BINDINGS;SendMessage
取出所有注解,由于允许重复注解因此通知类型可能有多个SetAnnotation
InterceptorBindings.getInterceptorBindings(invocationContext);//
context.getTarget().getClass().getSimpleName();//
{SendMessageSendMessage(sendType
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback