为什么编译时可以使用运行时依赖类?

时间:2014-07-31 14:05:58

标签: java eclipse spring maven

我正在使用eclipse中的maven-spring项目,我已声明了以下依赖项:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.0.0.RELEASE</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

根据我的理解,org.springframework.context中的类应仅在运行时可用,而不是在编译时可用。但是我能够在代码中从上面的包导入类而没有任何编译错误(在Eclipse中)。这是我的代码:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloWorld {

public static void main(String args[])
{
    ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
}

}

在这里,我的基本问题是上面的代码是如何工作的。当我尝试使用ApplicationContext时,它应该给出编译时错误,因为我已经在运行时范围中包含了“spring-context”工件?我的日食在这里做了一些伎俩吗?我在这里错过了什么?感谢

1 个答案:

答案 0 :(得分:0)

运行时可能需要也可能不需要编译时依赖项。在编译作用域依赖项的情况下,jar将被复制到您的类路径,因此将在运行时使用。另一方面,您可以使用某种依赖项编译代码,并且在运行时,您可以使用运行时范围的该依赖项的其他实现。

相关问题