首页 > 其他分享 >【Springboot】排除多余依赖与Bean实例

【Springboot】排除多余依赖与Bean实例

时间:2024-04-12 09:35:05浏览次数:20  
标签:return Springboot 过滤 private className Bean 实例 public String

一、背景: 引入公共包之后,需要排除部分不需要的包和bean,给当前服务最大程度减重

二、实现:

1.在pom.xml排除依赖

 2.在启动类上添加扫描排除项

@ComponentScan(basePackages = {"com.xxx"},
      excludeFilters = {
            @ComponentScan.Filter(
                  type = FilterType.CUSTOM, classes = {ScanExcludeFilter.class}
            )
      })
public class Application {

   public static void main(String[] args) throws Exception {
      SpringApplication.run(Application.class, args);
   }

}

其中,FilterType有以下几种:

public enum FilterType {
    ANNOTATION, //按照注解过滤
    ASSIGNABLE_TYPE, //按照类型过滤
    ASPECTJ,//按照ASPECTJ表达式过滤
    REGEX,//按照正则表达式过滤
    CUSTOM;//按照自定义的过滤规则过滤
    private FilterType() {
    }
}

3.实现TypeFilter

public class ScanExcludeFilter implements TypeFilter {

	// 需要的Bean包含的关键字
	private static final List<String> containsKeyWords = Arrays.asList(
			"core.config",
			"common.dao"
	);
	// 不能的Bean包含的关键字
	private static final List<String> excludeKeyWords = Arrays.asList(
			"XxxConfig"
	);

	@Override
	public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
		ClassMetadata classMetadata = metadataReader.getClassMetadata();
		String className = classMetadata.getClassName();
		if (!className.contains("ema")) {
			return false;
		}
		// 先走排除
		if (isExculdeBean(className)) {
			return true;
		}
		// 再看是否真的满足
		return !needContains(className);
	}

	// 匹配不需要的bean
	private boolean isExculdeBean(String className) {
		for (String keyword : excludeKeyWords) {
			if (className.contains(keyword)) {
				return true;
			}
		}
		return false;
	}

	// 匹配需要的bean
	private boolean needContains(String className) {
		for (String keyword : containsKeyWords) {
			if (className.contains(keyword)) {
				return true;
			}
		}
		return false;
	}


}

  

标签:return,Springboot,过滤,private,className,Bean,实例,public,String
From: https://www.cnblogs.com/coder-ydq/p/18130483

相关文章

  • 如何将自己的SpringBoot项目上传到GitHub上面!
    我最近想把之前做过的一些Java项目上传到GitHub上面,在网上找教程,失败了很多次终于完成了,先将方法介绍给大家!对了,先确保自己电脑装git了!!下载地址(镜像站下载快):https://mirrors.tuna.tsinghua.edu.cn/github-release/git-for-windows/git/LatestRelease/选择自己的电脑版本,一......
  • 精简springboot打包后的体积,提升启动速度
    改动之前5分钟,改动之后[2024-04-1113:43:37.100] [2024-04-1113:44:16.849]这里涉及两个打包插件maven-dependency-plugin和spring-boot-maven-plugin将依赖放置单独的文件夹<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-......
  • jar命令更新SpringBoot项目jar包里的补丁文件
    最近在因为项目依赖了太多微服务的包,所以项目经常报错,又因为在联调接口,需要经常打包,所以想直接在springboot项目的一个jar包直接加上自己的补丁,然后重新部署就行,提高效率使用压缩软件打开jar,然后往里面直接替换class文件,不过启动后,会报错Causedby:java.lang.IllegalStateExc......
  • 记录SpringBoot里JPA配置多数据源
    之前的系统是建立在mysql数据库上的,后来需求变更,需要跟教务系统对接获取教师的课表数据,在Oracle上。baidu了之后找了几篇样例,写完了。发现只能连接@Primary的数据源。思索3天后,觉得应该是系统启动时自动就将Primary的数据源加载好了,并没有根据我的bean和mapper去匹配对应的数据......
  • 【Shell】if选择结构语法实例
    if结构用于在Shell脚本中进行判定。如果指定的条件为真,则执行指定的命令。if和then若写在同一行,then与语句之间要使用分号“;”隔开。if语句结构一定要以“fi”结尾。1.单分支结构语法格式ifconditionthencommand1command2...commandNfi......
  • 2024年阿里云2核2G服务器价格揭晓:3M带宽经济型e实例仅需99元/年
    在当今这个数字化高速发展的时代,云服务器已成为企业和个人不可或缺的基础设施。阿里云,作为国内领先的云服务提供商,一直以其稳定、高效、安全的服务而备受用户青睐。今天,我要为大家介绍的是阿里云的一款超值优惠产品——2核2G3M经济型e实例云服务器ECS,仅需99元即可享有一年服务!......
  • 通过实例学C#之Thread类
    构造函数Thread(ThreadStart)该构造函数接受一个不带参数的方法。staticvoidMain(string[]args){Threadt1=newThread(newThreadStart(ThreadMethod1));t1.Start();Console.ReadKey();}staticvoidThreadMethod1(){for(inti=0;i<5......
  • 基于SpringBoot+MySQL+SSM+Vue.js的餐馆订餐系统(附论文)
    演示视频基于SpringBoot+MySQL+SSM+Vue.js的餐馆订餐系统技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描述基于SpringBoot+MySQL+SSM+Vue.js的餐馆订餐系统(附论文),用......
  • SpringBoot应用监控
    在微服务监控与安全 / SpringActuator中已经示例了SpringBoot提供了运行时的应用监控和管理的功能,可以通过http、jmx、ssh协议进行操作。1、http微服务监控与安全 / SpringActuator中已经就示范了这种方式。但是这种方式有个缺点:对于springactuator......
  • 京东一面:如何在SpringBoot启动时执行特定代码?有哪些方式?
    引言SpringBoot提供了许多便捷的功能和特性,使得开发者可以更加轻松地构建强大、高效的应用程序。然而,在应用程序启动时执行一些初始化操作是至关重要的,它可以确保应用程序在启动后处于预期的状态,从而提供更好的用户体验和稳定性。在应用程序启动时执行初始化操作有许多好处。......