当前位置: 首页 > news >正文

ui网站模板网络营销模式案例分析

ui网站模板,网络营销模式案例分析,2022年企业所得税税率,图怪兽在线设计平台在Spring Boot应用程序中,TypeExcludeFilter 是一个用于过滤特定类型的组件,使之不被Spring容器自动扫描和注册为bean的工具。这在你想要排除某些类或类型(如配置类、组件等)而不希望它们参与Spring的自动装配时非常有用。 作用 …

在Spring Boot应用程序中,TypeExcludeFilter 是一个用于过滤特定类型的组件,使之不被Spring容器自动扫描和注册为bean的工具。这在你想要排除某些类或类型(如配置类、组件等)而不希望它们参与Spring的自动装配时非常有用。

作用

通常情况下,Spring Boot应用会通过包扫描的方式自动识别并加载带有@Component, @Service, @Repository, 或者@Configuration等注解的类。然而,在一些场景下,我们可能不希望某些特定的类被自动加载,例如测试环境中的特殊实现,或者是为了优化启动速度而排除不必要的组件。此时,TypeExcludeFilter就派上用场了,它允许开发者根据类型来排除这些不需要的组件。

使用示例

假设我们有一个项目结构如下:

com.example
├── config
│   └── AppConfig.java
└── service
│   ├── HelloService.java
│   └── WorldService.java
└── MyApplication.java

这两个 Service 默认都会被 SpringBootApplication 自动扫描。我们可以利用TypeExcludeFilter来确保MockService不会在非测试环境中被加载。

首先,我们需要创建一个自定义的过滤器,该过滤器继承自TypeExcludeFilter并重写matches方法来指定哪些类型应该被排除。
请注意,我们继承 TypeExcludeFilter 并重写方法而不是直接实现TypeFilter接口中的matches方法。这是因为TypeExcludeFilter@SpringBootApplication 注解自动扫描时候已经默认配置的过滤器类,如下是源码片段:

@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {...
}

编写自定义过滤器

创建自定义过滤器类,继承 TypeExcludeFilter 并重写 match 方法:

package com.example.filter;import org.springframework.context.annotation.TypeExcludeFilter;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;public class MyTypeExcludeFilter extends TypeExcludeFilter {@Overridepublic boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {String className = metadataReader.getClassMetadata().getClassName();// 根据需要设置排除逻辑,例如这里排除特定类。比如你还可以排除所有 Test开头、Demo开头这样的类。return className.startsWith("com.example.service.HelloService");}
}

注册自定义过滤器

为了确保我们的自定义过滤器能够在应用启动时生效,我们需要创建一个实现了ApplicationContextInitializer接口的类,并在此类中注册我们的过滤器。

package com.example.initializer;import com.example.filter.MyTypeExcludeFilter;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;
import org.springframework.core.type.filter.TypeFilter;public class MyTypeExcludeFilterInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {@Overridepublic void initialize(@NonNull ConfigurableApplicationContext applicationContext) {applicationContext.getBeanFactory().registerSingleton("myTypeExcludeFilter", new MyTypeExcludeFilter());}
}

配置 spring.factories

最后一步是在META-INF/spring.factories文件中注册我们的ApplicationContextInitializer,这样它就可以在应用启动时被自动加载:

org.springframework.context.ApplicationContextInitializer=\
com.example.initializer.MyTypeExcludeFilterInitializer

这行配置告诉Spring Boot,在应用启动时,应该查找并初始化MyTypeExcludeFilterInitializer

之所以需要在 spring.factories 中进行配置,是因为我们需要在 @ComponentScan 注解执行之前就将我们的自定义过滤器类注册到 spring 上下文中,否则自定义的类就没用了。

总结

通过上述步骤,我们成功地将TypeExcludeFilter集成到了Spring Boot应用中,并且不需要显式地编写@ComponentScan注解或修改任何现有的配置。这种方式不仅简化了代码结构,也使得我们可以更加灵活地控制哪些类型的组件应该被排除在外。


(END)

http://www.yayakq.cn/news/350681/

相关文章:

  • 素材解析网站搭建付费 视频 网站 怎么做
  • 网站建设心得.doc制作开发app需要多少钱
  • 网站开发后端菜鸟教程如果我的网站被百度收录了_以后如何做更新争取更多收录
  • 东莞市研发网站建设公司如何提高网站关键词的排名
  • 电商网站建设特色南京网页设计招聘
  • 哪家做网站做的好关于网站建设的文案
  • 网站前端开发有哪些做汽配的网站
  • 怎么在网站投放广告怎么在百度上推广自己的店铺
  • 网站诊断博客网站与备案信息不符
  • 烟台网站的建设网页设计导航栏代码怎么写
  • 网站制作价格怎么算一流的句容网站建设
  • 新民正规网站建设价格咨询建筑公司简介模板免费下载
  • 网站建设产品展示型的wordpress用户角色管理系统
  • 大鹏网站建设建站好不好上海工程网站建设
  • 云梦网站开发整站seo排名公司
  • 池州网站制作公司ui设计大专好就业吗
  • 中国建设银行企业信息门户网站江苏住房和城乡建设信息网站
  • 苏州个人网站制作如何注册公众号
  • 南宁设计网站网站建设流程图在线制作
  • 江桥网站建设贵阳网站制作工具
  • 怎么网站后台杭州燎远精品课程网站建设
  • 做网站语言排名2018电子商务网站建设方案的总结
  • 专门做杂志的网站徐州专业网站建设
  • 上海企业建站推荐工程造价信息网站
  • 辽宁网站建站中国中小企业信息网
  • 长沙有哪些网站建设公司好好牌子商城网
  • 网站返回503的含义是正规企业展厅设计公司
  • 创可贴设计网站官网保密管理咨询公司
  • 网站界面布局门户网站的概念
  • wordpress靶机下载网站wordpress菜单分类