首页 > 其他分享 >spring扫描本项目包下类数量 方法数量

spring扫描本项目包下类数量 方法数量

时间:2023-10-11 16:11:59浏览次数:36  
标签:core String spring springframework 包下类 io import org 数量

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.util.ClassUtils;

import java.io.IOException;


@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class SchedulApplicationTests {

	private final String BASE_PACKAGE = "org.jeecg.modules";
	private final String RESOURCE_PATTERN = "/**/*Mapper.class";

	@Test
	void contextLoads() {
		int cnt = 0;
		//spring工具类,可以获取指定路径下的全部类
		ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
		try {
			String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
					ClassUtils.convertClassNameToResourcePath(BASE_PACKAGE) + RESOURCE_PATTERN;
			Resource[] resources = resourcePatternResolver.getResources(pattern);
			//MetadataReader 的工厂类
			MetadataReaderFactory readerfactory = new CachingMetadataReaderFactory(resourcePatternResolver);
			for (Resource resource : resources) {
				//用于读取类信息
				MetadataReader reader = readerfactory.getMetadataReader(resource);
				//扫描到的class
				String classname = reader.getClassMetadata().getClassName();
				Class<?> clazz = Class.forName(classname);
				int length = clazz.getDeclaredMethods().length;
				cnt += length;
			}
			System.err.println(cnt);
		} catch (IOException | ClassNotFoundException ignored) {
		}
	}
}

标签:core,String,spring,springframework,包下类,io,import,org,数量
From: https://www.cnblogs.com/qwer78/p/17757427.html

相关文章

  • Spring Batch 批处理框架,真心强呀!!
    一、SpringBatch介绍SpringBatch是一个轻量级、全面的批处理框架,旨在支持开发对企业系统的日常操作至关重要的健壮的批处理应用程序。SpringBatch建立在人们期望的SpringFramework特性(生产力、基于POJO的开发方法和一般易用性)的基础上,同时使开发人员可以在必要时轻松......
  • Spring Cloud服务之Nacos作为注册中心与配置中心
    1、创建maven父工程管理jar包版本创建maven骨架,删除多余部分文件。只留pom文件,添加依赖<packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>......
  • spring boot视频播放平台,播放视频很卡,有几种方案解决
    1.首先介绍场景:视频播放平台,系统使用Springboot和Vue编写。拥有前台和后台,前台进行视频播放,后台进行视频的上传,也可以上传音乐和图片,功能顺手都做了。2.问题:浏览器播放视频卡顿。视频卡顿问题需要攻克2关。3.解决过程1)第一关:视频文件太大,浏览器加载时间长。采用后端对......
  • SpringBoot一个小案例
    pojopublicclassUser{privateintuserid;publicUser(intuserid){this.userid=userid;}publicUser(){}publicintgetUserid(){returnuserid;}publicvoidsetUserid(intuserid){this.userid=userid;}}controller@Controller@......
  • Spring Cloud相关组件说明
    1、SpringCloud版本现有SpringCloud有两代实现,分为SpringCloudNetflix和SpringCloudAlibaba,由于SpringCloudNetflix版一些重要组件如注册中心Euraka、Ribbon已经不再迭代更新了,SpringCloudAlibaba慢慢孵化出SpringCloudAlibaba一套相关组件。2、SpringCloudNetflix......
  • springboot启动后异步启动一个程序
    如果你想在SpringBoot启动后异步方式启动一个方法,你可以使用SpringFramework的异步支持和 @Async 注解来实现。以下是如何在SpringBoot应用程序中异步方式启动一个方法的步骤:配置异步支持: 首先,在应用程序的主类上添加 @EnableAsync 注解,以启用异步支持importor......
  • SpringBoot的启动流程扩展点
    阅读说明:1.如果有排版格式问题,请移步https://www.yuque.com/mrhuang-ire4d/oufb8x/yo5ywqt5eudxvxfc?singleDoc#%20%E3%80%8ASpring%E5%8F%AF%E6%89%A9%E5%B1%95%E6%8E%A5%E5%8F%A3%E6%80%BB%E7%BB%93%E3%80%8B,选择宽屏模式效果更佳。2.本文为原创文章,转发请注明出处。SpringBoot......
  • Spring 源码分析(五)——Spring三级缓存的作用分别是什么?
    Spring的三级缓存是经典面试题,也会看到一些文章讲三级缓存与循环依赖之的关系。那么,三级缓存分别存储的什么呢?他们的作用又分别是什么?一、一、二级缓存一级缓存是一个名为singletonObjects的ConcurrentHashMap,用于存储已经创建完成的Bean。其作用也是最明显的,获取Bean时最优......
  • Redis的Java客户端——SpringDataRedis、RedisTemplate、StringRedisTemplate
     版权声明:本文为CSDN博主「我爱布朗熊」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_51351637/article/details/127502799一、初步了解SpringDataRedisSpringData是Spring中数据操作的模块,包括对各种数据库的集......
  • SpringBootWeb登录认证 上
    案例-登录认证在前面的课程中,我们已经实现了部门管理、员工管理的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。这是不安全的,所以我们今天的主题就是登录认证。最终我们要实现的效果就是用户必须登录之后,才可以访问后台系统中的功能。1.登......