如何使用java代码加载指定包下面的所有类

本文介绍了如何使用Java代码动态加载指定包下的所有类,通过配置文件读取和反射技术,可以方便地对获取到的类进行进一步操作。提供了一个简单的实现流程和相关工具类的说明。
摘要由CSDN通过智能技术生成

如何加载指定包下面的所有类

使用代码来实现加载指定包下面的所有类

配置文件config.properties(其位置在resource目录下)

page=cn.ishow

读取配置文件工具类

/**
 * 读取配置文件工具类
 */
public abstract class ReadUtils {
    private static Map<String,Object> cache = new HashMap<>();

    private static Properties properties = null;

    static {
        properties = new Properties();
        try {
            properties.load(ReadUtils.class.getResourceAsStream("/config.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static Object read(String key){
        Object value = cache.get(key);
        if(value==null){
            synchronized (ReadUtils.class){
                value = cache.get(key);
                if(value==null) {
                    value = properties.get(key);
                    cache.put(key, 
AspectJ是一种Java语言的动态代理框架,它允许开发者在运行时插入额外的行为(称为切面,Aspect),这些切面可以修改、增强或监控应用程序的业务逻辑。通过装载植入(Classpath Interception),AspectJ可以在库被加载到JVM之前对其进行处理,这通常发生在`java.lang.ClassLoader`的`loadClass()`方法内部。 使用AspectJ进行加载植入的基本步骤括: 1. **配置AspectJ**: 首先需要在项目的构建文件(如Maven或Gradle配置)中添加AspectJ的依赖,并启用相关的插件或注解处理器。 2. **编写Advice**: 创建一个Aspect,里面含切入点(Pointcut),这是一个匹配目标的规则,以及通知(Advice)部分,这是在特定点执行的代码,比如在加载时。 ```java @Aspect @Component public class MyAspect { @LoadTimeWeaving(// 装载植入的标志 aspectjWeave = "all-in-packages" // 指定应用此切面的所有 ) public static class LoadTimeWeavingAdvisor { @Before("@annotation(MyLoadAnnotation)") // 匹配带有自定义注解的 public void weave(Class<?> clazz) throws Throwable { // 在这里添加你需要的操作,比如日志记录、性能统计等 System.out.println("Class " + clazz.getName() + " is loaded."); } } } ``` 3. **标记目标**: 为了使在被装载时触发切面,需要在使用自定义注解(例如`@MyLoadAnnotation`)或其他AspectJ支持的注解。 4. **启动应用**: 当含注解的库被加载时,AspectJ会执行相应的Advice。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值