Spring中的组件扫描过滤器类型

柴坦亚

我使用的学习春春在行动第3版,我在不同的来到filter typescomponent scanning春。

这是可用的列表:

注解-筛选扫描类,以查找那些在类型级别上使用给定注解进行注解的类。在expression属性中指定要扫描的注释。

可分配的-筛选扫描类以查找可分配给expression属性中指定的类型的那些类。

Aspectj-过滤扫描类以查找与expression属性中指定的AspectJ类型表达式相匹配的扫描类。

custom-使用expression属性中指定的org.springframework.core.type.TypeFilter的自定义实现。

regex-筛选扫描类,以查找其类名与expression属性中指定的正则表达式匹配的那些类。

我根据书中给出的示例了解了将过滤器类型用于可分配对象和注释的一些想法。

但是对于其余的过滤器类型,我无法理解如何使用这些类型以及何时需要使用其中一种。您能帮我理解这里的概念吗?

艾默生·法鲁吉亚(Emerson Farrugia)

组件扫描告诉Spring递归地查找包中的类,为找到的每个类实例化一个对象,并管理这些对象的生命周期。这些对象称为bean。(这是一个非常粗略的解释; Spring检查范围,创建代理以及执行大量其他操作,但是这些细节与谈论过滤器无关。)

组件扫描过滤器缩小了实例化bean的那些类的范围。

  • 您可能只想考虑具有特定注释的类,例如@Component,并为此使用注释过滤器。
  • 您可能要考虑实现特定接口(例如)的类Dao,并为此使用可分配的。
  • 您可能想按名称选择一些类,例如com.foo.**.service.*,然后使用正则表达式
  • 您可能要使用表达式来选择类的复杂子集,例如com.foo..service.* && !com.foo..MockService,而您将为此使用Aspectj
  • 您可能极少希望通过类的元数据来选择类,例如,如果该类具有一个名为的封闭类Foo则可以创建一个bean ,然后编写一个自定义方法 TypeFilter来使您可以访问该元数据。

从我的亲身经历中,我按照受欢迎程度的高低列出了它们,我猜想,到目前为止annotationassignable它们是最受欢迎的。

更新:所有过滤器均实现为TypeFilter,它们在其match方法中查看类元数据的不同部分例如,RegexPatternTypeFilter实现正则表达式过滤器,其match方法类似于

@Override
protected boolean match(ClassMetadata metadata) {
    return this.pattern.matcher(metadata.getClassName()).matches();
}

编写自己的自定义 TypeFilter脚本使您可以使用org.springframework.core.type.ClassMetadataorg.springframework.core.type.AnnotationMetadata接口中的方法来确定Spring是否应为具有某些特定元数据的类创建Bean。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React组件中的AngularJS过滤器

来自分类Dev

过滤器函数中的类型错误

来自分类Dev

如何在 angular2 中创建独特的过滤器过滤器组件

来自分类Dev

带过滤器的DyanmoDB扫描

来自分类Dev

Spring Cloud:在Zuul中使用路由类型过滤器

来自分类Dev

如何在Vuejs组件中应用过滤器?

来自分类Dev

如何在Angular中创建过滤器组件

来自分类Dev

什么类型的过滤器是“过滤器”命令

来自分类Dev

JFileChooser在过滤器中添加不同的文件类型

来自分类Dev

PyCharm警告:字典中过滤器的类型异常

来自分类Dev

JFileChooser在过滤器中添加不同的文件类型

来自分类Dev

Spring Integration过滤器

来自分类Dev

如何在Spring Boot中设置过滤器链?

来自分类Dev

Spring MVC中的分页和过滤器

来自分类Dev

Spring-无法在过滤器中访问Bean

来自分类Dev

Spring MVC中的分页和过滤器

来自分类Dev

了解Spring 3.2.8中的弹簧过滤器

来自分类Dev

从过滤器访问组件方法

来自分类Dev

MOODLE中的过滤器

来自分类Dev

Angular 中的过滤器

来自分类Dev

VueJs 中的过滤器

来自分类Dev

Kibana 中的过滤器

来自分类Dev

查看项目组件返回后保存列表组件中项目的选择过滤器值

来自分类Dev

按类型的scala过滤器

来自分类Dev

类型数组上的IQueryable过滤器

来自分类Dev

多重文档的类型细化过滤器

来自分类Dev

如何有条件地跳过Grails Spring Security插件过滤器链中的SecurityContextPersistenceFilter过滤器

来自分类Dev

在Java的DynamoDB扫描中使用包含过滤器

来自分类Dev

在目标C中使用扫描过滤器的dynamodb scanexpression