首页 > 其他分享 >Spring容器跳过指定对象初始化扫

Spring容器跳过指定对象初始化扫

时间:2023-09-13 17:36:38浏览次数:55  
标签:初始化 type Spring springframework ComponentScan import 过滤器 org 跳过

在Spring容器中,如果你希望跳过指定对象的初始化扫描,你可以使用`@ComponentScan`注解的`excludeFilters`属性来实现。`excludeFilters`属性可以指定扫描时需要排除的类或接口。


例如,假设你有一个名为`MyBean`的对象,你不希望它被Spring容器初始化扫描。你可以创建一个自定义的过滤器来排除该对象,然后将过滤器应用到`@ComponentScan`注解上。


首先,创建一个自定义的过滤器类,继承自`org.springframework.core.type.filter.TypeFilter`。在过滤器类中,重写`match`方法,返回`false`表示匹配失败,返回`true`表示匹配成功。


```java

import org.springframework.core.type.classreading.MetadataReader;

import org.springframework.core.type.classreading.MetadataReaderFactory;

import org.springframework.core.type.filter.TypeFilter;


import java.io.IOException;


public class MyBeanFilter implements TypeFilter {

@Override

public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {

String className = metadataReader.getClassMetadata().getClassName();

return !className.equals("com.example.MyBean");

}

}

```


然后,在你的配置类(通常是带有`@Configuration`注解的类)上添加`@ComponentScan`注解,并设置`excludeFilters`属性为你创建的过滤器类。


```java

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.FilterType;


@Configuration

@ComponentScan(

basePackages = "com.example",

excludeFilters = {

@ComponentScan.Filter(type = FilterType.CUSTOM, classes = MyBeanFilter.class)

}

)

public class AppConfig {

// 配置其他的bean或组件

}

```


这样,Spring容器在进行初始化扫描时,就会跳过`MyBean`对象。

标签:初始化,type,Spring,springframework,ComponentScan,import,过滤器,org,跳过
From: https://blog.51cto.com/u_12539073/7462603

相关文章

  • Spring高手之路14——深入浅出:SPI机制在JDK与Spring Boot中的应用
    1.SPI解读:什么是SPI?  SPI (ServiceProviderInterface)是一种服务发现机制,它允许第三方提供者为核心库或主框架提供实现或扩展。这种设计允许核心库/框架在不修改自身代码的情况下,通过第三方实现来增强功能。JDK原生的SPI:定义和发现:JDK的SPI主要通过在META-INF/services/目......
  • springboot 整合 nacos 实现配置文件统一管理 和 服务注册
    1.我使用的是 nacos-server-1.4.1 直接启动nacos没有配置数据库那些.\startup.cmd-mstandalone2.启动后在nacos中创建命名空间配置文件 注意命名空间的id我是自己定义的还有group到时候配置错了服务又不会报错只是会读取不到3.springboot配置 server-addr......
  • 13-变量的申明-初始化-删除变量-垃圾回收机制
       需要先定义,做一个初始化,不然直接输入ddd会报错,没有被定义 此处a已经被删除了,3仍然在 通过垃圾回收机制把不用的对象进行回收,释放内存 ......
  • 10 分析类的初始化
    packageannotate;//分析类的初始化,取决于是否实例化对象?publicclassTest10{static{System.out.println("main被初始化");}publicstaticvoidmain(String[]args)throwsClassNotFoundException{//被初始化//Class.forNa......
  • Springboot RocketMQ整合—官方原版
    Doker 技术人自己的数码品牌Doker官网:Doker多克一、添加maven依赖:<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>${RELEASE.VERSION}</version></dependen......
  • Dubbo配置问题____spring中dubbo标签报错问题和解决方案
    //1.当在springxml中引用dubbo标签时会报错windows-->preferrence-->xml->xmlcatalog-->add->catalogentry-->filesystem,选择模版文件后,修改key值为“http://code.alibabatech.com/schema/dubbo/dubbo.xsd”//资源文件下载 http://pan.baidu.com/s/1c2h6uzA......
  • Spring小技巧--计算表达式的值
    平时工作中经常要用到表达式值的计算问题,Spring框架中提供了SpringExpressionLanguage(简称SpEL)机制,可以很方便快捷的实现表达式值的计算;SpEL机制需要引入Spring-expression包。下面列举其应用的两个小Demo;1、数值计算:StringexpressionStr="19+26";ExpressionParse......
  • 对SpringBoot接口进行操作日志记录
    最近业务有需求要对所有的用户操作进行日志记录,方便管理员查询不同权限级别的用户对系统的操作记录,现有的日志只是记录了异常信息、业务出错、重要功能的执行进行了记录,并不能满足需求要求,最直接的解决方法是在每个接口上去添加log.info之类的代码,但是这种方式对业务代码的切入性......
  • Spring源码分析(五)BeanDefinition(下)
    上篇文章已经对BeanDefinition做了一系列的介绍,这篇文章讲一些BeanDefinition合并的一些知识,完善整个BeanDefinition的体系,Spring在创建一个bean时多次进行了BeanDefinition的合并。本文主要对应官网中1.7小节上篇文章主要说了BeanDefinition的一些属性,其中有以下几......
  • 基于 COLA 架构的 Spring Cloud Alibaba(二)整合 MyBatis-Plus、 Knife4j
    上一篇中,我们介绍了项目的基本架构和相关知识。这一篇,我们将在上一篇已搭建好的项目基础架构上进行整合MyBatis-Plus、Knife4j。1.整合MyBatis-Plus1.1.关于MyBatis-PlusMyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效......