类要继承classLoader才有defineClass方法 还有实现ApplicationContextAware接口
public String test() throws Exception{
String myPath = "file:/D:/test/class/MyMain.class";
System.out.println(myPath);
byte[] cLassBytes = null;
Path path = null;
try {
path = Paths.get(new URI(myPath));
cLassBytes = Files.readAllBytes(path);
} catch (IOException | URISyntaxException e) {
e.printStackTrace();
}
Class clz = defineClass("MyMain", cLassBytes, 0, cLassBytes.length);
Method method = clz.getMethod("test");
Object obj = clz.newInstance();
// method.invoke(obj);
ConfigurableApplicationContext cc = (ConfigurableApplicationContext)context;
DefaultListableBeanFactory factory = (DefaultListableBeanFactory)cc.getBeanFactory();
BeanDefinitionBuilder buider = BeanDefinitionBuilder.genericBeanDefinition(clz);
Field[] field = clz.getDeclaredFields();
for(Field field1 : field){
buider.addPropertyReference(field1.getName(),field1.getName());
}
factory.registerBeanDefinition("myMain",buider.getRawBeanDefinition());
Object obj1 = context.getBean("myMain");
method.invoke(obj1);
return "ok";
}
分享到:
相关推荐
对于动态加载,我们可以利用`Resource`接口和`ClassPathResource`类来加载运行时变更的属性文件。 除了这两种方式,Spring Boot引入了更强大的`ConfigDataLocationResolver`和`ConfigDataLoader`接口,它们允许我们...
spring的bean动态加载则需要对相应的bean进行动态注册,以及jar与class文件动态加载。测试示例中是spring boot 的部分代码,动态加载的内容为接口实现类,且初始化时加载本地的实现类,动态加载后改为非程序加载目录...
总之,理解并掌握如何使用ClassLoader动态加载Class是Java开发中的重要技能,它能帮助我们构建更灵活、可扩展的系统。在实现过程中,要兼顾性能、安全和可维护性,合理设计类加载策略,确保代码的高效运行。
本篇将详细讲解如何在Spring 3.0的配置文件中加载Properties文件,以便在运行时动态获取和使用这些配置。 首先,我们需要一个Properties文件,例如`application.properties`,它通常放在项目的类路径根目录下。这个...
首先,我们来看一下Spring加载配置文件的基本方式。在Spring中,可以通过ApplicationContext接口的实现类,比如ClassPathXmlApplicationContext,来加载位于classpath中的配置文件。例如,创建一个...
4. **加载类**:对于每个类文件,使用自定义类加载器的`defineClass()`方法将其字节码转换为Class对象。这个过程涉及解码字节码、校验类信息,然后创建Class对象。 5. **反射调用方法**:一旦类被加载,我们可以...
"class文件热加载,上传class文件实现热加载"这个主题主要涉及到Java应用的运行时动态更新机制。下面将详细介绍这个过程及其相关知识点。 1. **Java类加载器**: - Java虚拟机(JVM)通过类加载器来加载类。默认有...
在Spring框架中,加载多个配置文件是常见的需求,特别是在大型项目中,为了保持代码的整洁和模块化,通常会将不同的配置分散到多个文件中。本文将深入探讨如何在Spring中实现这一功能。 首先,Spring提供了多种方式...
Java热加载Class文件技术是一种在不重启应用服务器的情况下更新或替换正在运行的Java类的方法,这对于开发者来说是一项非常实用的功能,因为它极大地提高了开发效率。在传统的开发过程中,修改代码后通常需要停止、...
这种方式特别适用于需要动态加载一类配置文件的场景,比如当有新的配置文件加入时,不需要修改Java代码即可自动加载新文件。 **示例代码:** ```java import org.springframework.context.ApplicationContext; ...
"Spring+mvc+mybatis Mapper xml自动加载"这个主题聚焦于如何在开发过程中优化配置,使得改动Mapper XML文件后,无需重启Tomcat服务器,就可以立即生效,从而提高开发效率。 Spring MVC是Spring框架的一部分,它...
`ClassUtil.java`可能包含了一些辅助方法,用于在运行时编译修改后的Java源码,然后由类加载器加载到JVM中。Java的`javac`工具或第三方库如Apache Ant或Maven的Compiler插件可以用于此目的。 **自动引用依赖**:在...
### Spring启动时根据配置文件加载不同文件的知识点详解 #### 一、背景介绍 在实际的应用开发中,根据运行环境的不同(例如开发环境、测试环境、生产环境等),应用程序往往需要连接不同的数据库或其他资源。为了...
Spring提供了`ClassPathResource`类,可以用来加载类路径下的资源,包括jar包内的文件。例如,如果你的jar包名为`mylib.jar`,配置文件为`myconfig.xml`,你可以这样加载: ```java Resource resource = new Class...
1. **类路径(Classpath)**:类路径是Java运行环境查找.class文件的路径,它决定了Java虚拟机在执行程序时如何找到所需的类。可以通过`-cp`或`-classpath`命令行参数,或者在`JAVA_CLASSPATH`环境变量中设置。 2. ...
《Spring框架加载机制详解》 在Java开发领域,Spring框架以其强大的依赖注入和面向切面编程功能,成为了企业级应用的首选。本文将深入探讨Spring框架的加载过程,旨在帮助开发者更好地理解和掌握Spring的核心机制。...
`<listener>`标签中的`<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>`定义了一个监听器,它会在Web应用启动时自动加载默认的Spring配置文件,即`/WEB-INF/...
"Spring Boot 容器加载完成后执行特定操作" Spring Boot 框架提供了多种方式来执行容器加载完成后的特定操作,例如使用 ApplicationListener 接口或使用 @PostConstruct 注解。在本文中,我们将介绍使用 ...
Spring中ApplicationContext加载机制 ApplicationContext 是 Spring 框架中的核心组件之一,负责加载和管理应用程序中的 Bean 对象。在 Web 应用程序中,ApplicationContext 的加载机制是非常重要的, Spring 提供...
今天我们将深入探讨"day38 04-Spring加载配置文件"这一主题。 首先,Spring框架提供了两种主要的配置方式:XML配置和Java配置。XML配置是最传统的形式,通过`<beans>`标签定义bean及其属性。而Java配置则是通过注解...