-
请教JVM读取annotation的顺序问题3
这个问题源自使用Spring TestContext测试框架时遇到的一个问题。
AbstractJUnit4SpringContextTests可以使用@ContextConfiguration指定配置文件的位置。但是读取配置文件是在@BeforeClass方法之后的。如下面这段程序:
@ContextConfiguration(locations = {"classpath:datasource.xml"}) public class XXXXTest extends AbstractJUnit4SpringContextTests { @BeforeClass public static void setUpBeforeClass() { …… } }
我指定了配置文件locations = {"classpath:datasource.xml"},里面是Hibernate的配置,但是在setUpBeforeClass()方法中,并不能使用这些Hibernate的Bean。(因为这个现象我是否可以认为@BeforeClass被读取时,@ContextConfiguration还没有被读取?)
我看了些annotation的资料,说:“一个annotation类型被定义为@Retent(RetentionPolicy.RUNTIME)后,它才是在运行时可见,当class文件被装载时被保存在class文件中的annotation才会被虚拟机读取。”
@ContextConfiguration和@BeforeClass都被标注为@Retent(RetentionPolicy.RUNTIME),所以它们应该都是在类加载阶段被JVM读取的。但这个读取应该是存在顺序关系的。谁先被读取?谁后被读取?请问JVM是如何确定这个顺序的?
PS:
@ContextConfiguration本身被标注为@Target(value=TYPE)
@BeforeClass本身被标注为@Target(value=METHOD)
这个区别会不会是造成读取顺序的原因?
2010年8月22日 17:14
目前还没有答案
相关推荐
MpApt - Kotlin (Native/JS/JVM) Annotation Processor library I wrote an annotation processing libary that can detect annotations in Kotlin Native/JS and Jvm projects, because Kapt is only ...
JVM 内存溢出问题解析 JVM 内存溢出是指程序运行所需的内存大于虚拟机能提供的最大内存的情况。这种情况可能是由于数据量过大、死循环、静态变量和静态方法过多、递归、无法确定是否被引用的对象等原因引起的。同时...
类加载器负责读取类文件并将其加载到JVM内存中。Java中类加载器的种类有多种,最顶层的父加载器是Bootstrap类加载器,其次是Extension类加载器和Application类加载器。此外,还可以通过实现java.lang.ClassLoader类...
### 美团JVM问题定位和排错 #### 背景 在现代软件开发中,Java虚拟机(JVM)作为运行Java程序的基础平台,对于任何使用Java语言进行开发的服务都至关重要。然而,在实际运行过程中,由于复杂的运行环境和技术栈的...
JVM 输出 GC 日志导致 JVM 卡住是一个常见的问题,尤其是在高并发和高性能应用中。这个问题的根源在于 JVM 的垃圾回收机制(Garbage Collection,GC),它会在 JVM 运行时周期性地进行垃圾回收,以释放内存空间。...
Java虚拟机(JVM)是Java程序运行的核心,它负责解释和执行字节码,为Java应用程序提供了一个跨平台的运行环境。JDK(Java Development Kit)包含了开发和运行Java程序所需的所有工具,包括JVM。当我们谈论"jdk,jvm...
标题中提到了JVM原理、JVM调优、JVM内存模型和JAVA并发,这些都是Java虚拟机(JVM)相关的核心概念。JVM是运行Java字节码的虚拟计算机,为Java提供了一个跨平台的环境,确保Java程序可以在不同的操作系统上运行而...
jvm优化及问题定位 架构师培训 讲解-----------------------------------------------------------------------------------
解决 JVM 中的 PermGen space 问题 PermGen space(Permanent Generation space)是 JVM 中的一块永久保存区域,用于存放 Class 和 Meta 信息。当应用程序加载 Class 时,Class 就会被放入 PermGen space 区域中,...
### JVM问题定位的典型案例分析 #### 一、背景与概述 在现代软件开发过程中,Java虚拟机(JVM)作为Java应用程序运行的基础平台,其稳定性和性能至关重要。然而,在实际应用中,由于各种复杂的因素,可能会遇到JVM...
本篇文章将深入探讨JVM的一些常见问题,这些内容对于理解和优化Java应用程序至关重要,同时也是面试中的高频考察点。 一、JVM内存结构 1. **堆内存**:Java对象主要存放在堆内存中,它是所有线程共享的一块区域,...
Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。本文将深入探讨JVM的启动过程...通过深入研究JVM,开发者可以更好地解决内存溢出、性能瓶颈等问题,实现更高效的Java应用。
- **双亲委派模型**:理解JVM如何加载类,避免类加载冲突和安全问题。 - **类加载器**:合理配置自定义类加载器,确保类加载的顺序和逻辑。 3. **JVM启动参数:** - **-Xms 和 -Xmx**:分别设置初始堆内存和最大...
虽然`jvm-mon`提供了基本的JVM监控功能,但更复杂的性能问题可能需要结合其他专业工具,如JProfiler、VisualVM、YourKit等,它们提供更深入的分析和故障排查能力,如方法调用时间线、内存分配跟踪、线程栈深度等。...
JVM性能调优和常见问题!JVM结构和常见错误解决
### JVM问题诊断常用命令详解 在Java开发与运维过程中,针对JVM(Java虚拟机)进行性能调优、故障排查是非常重要的环节。本文将详细介绍三种常用的JVM问题诊断工具:`jinfo`、`jmap` 和 `jstack` 的功能、用法以及...
### JVM 详细介绍:掌握 JVM 的各个组成部分与功能 #### 一、Java 源文件编译及执行 Java 应用程序的核心...理解 JVM 的内部工作原理有助于开发者更好地编写高质量的 Java 应用程序,并有效解决运行时遇到的问题。
SAP JVM 8.1 64位是一个专为SAP系统设计的Java虚拟机,它基于Oracle的Java Development Kit (JDK) 进行优化,以满足SAP应用程序的特定需求。SAP JVM旨在提高性能、可靠性和安全性,同时确保与SAP产品的无缝集成。...
在这个压缩包中,"JVM图解.png"可能是对JVM内部结构的可视化表示,"JVM图解"可能是一个详细的文档,解释了JVM的工作原理,而"JVM指令手册 中文版"则提供了JVM可执行的所有指令的详细信息。下面,我们将深入探讨JVM的...
Java虚拟机(JVM)是Java程序运行的核心组件,它负责解释和执行字节码,为开发者...理论学习后,实践操作是巩固知识的关键,尝试在实际项目中应用这些知识,解决性能问题,优化JVM配置,将使你对JVM的理解更加深入。