Java 扫描某包下所有类的注解并获得注解值
Posted 洛阳泰山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 扫描某包下所有类的注解并获得注解值相关的知识,希望对你有一定的参考价值。
前言
之前,设计的一个大型后台的多模块项目,没有按照模块化分库,每个模块的表都放在同一个模块里。公司现在的开发新项目有类似功能,都把之前的模块打成jar包引入新的项目代码中,但是你不熟悉这个模块都用到那些表,之前建表的时候,也没有按照模块名作为前缀去建表,导致迁移表的时间都浪费在 分辨那些表有用到上面。
下面运用反射去扫描模块包下,数据库entity类的@tablename注解的值,可以快速打印出该模块引用的表有哪些,代码实现如下。
pom文件引入依赖
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.11</version>
</dependency>
代码实现
public static void main(String[] args)
// 要扫描的包
String packageName = "org.springblade.system";
//反射
Reflections ref = new Reflections(packageName);
// 获取扫描到的标记注解的集合
Set<Class<?>> set = ref.getTypesAnnotatedWith(TableName.class);
System.out.println("--------start-------------");
for (Class<?> c : set)
// 循环获取标记的注解
TableName annotation = c.getAnnotation(TableName.class);
if(annotation!=null)
// 打印注解中的内容
System.out.println("表名:"+annotation.value());
System.out.println("--------over-------------");
控制台输出
以上是关于Java 扫描某包下所有类的注解并获得注解值的主要内容,如果未能解决你的问题,请参考以下文章