Я работаю над проектом maven-spring в eclipse, где я объявил ниже зависимость:
<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" с областью исполнения? Мое затмение делает здесь какой-то трюк? Что мне здесь не хватает? благодаря
Зависимость времени компиляции может потребоваться или не понадобиться во время выполнения. В случае зависимости от области компиляции, jar будет скопирован в ваш путь к классам и, следовательно, будет использоваться во время выполнения. С другой стороны, вы можете скомпилировать свой код с определенной зависимостью, и во время выполнения вы можете использовать некоторую другую реализацию этой зависимости с областью выполнения.
3.1.1
или версию, которой нет в репозитории Maven.