java - Maven项目依赖中的包类覆盖,这种行为叫什么?
问题描述
我有一个依赖项目,我在其中定义了以下类
package it.dependency.common;
public class Consumer {
public void consume() {
Worker dependency = new Worker();
dependency.work();
}
}
和
package it.dependency.common;
public class Worker {
public void work() {
System.out.println("I'm doing things in the DEPENDENCY project");
}
}
如果我运行一个简单的 main 调用consume()
Consumer 对象的方法,它会正确打印,我正在 DEPENDENCY 项目中做事。
我将这个 maven 项目编译到一个 jar 中,并将它作为另一个项目中的依赖项导入到另一个项目中,称为测试项目
<dependency>
<groupId>org.example</groupId>
<artifactId>dependency</artifactId>
<version>1.0-SNAPSHOT</version>
<systemPath>${lib.path}/dependency-1.0-SNAPSHOT.jar</systemPath>
</dependency>
我可以重新定义其他类
package it.dependency.common;
public class Worker {
public void work() {
System.out.println("I'm doing things in the TEST project");
}
}
现在,如果我运行一个简单的主程序,我在其中调用 DEPENDENCY 项目的 Consumer 类,它会打印出I'm doing things in the TEST project。
所以消费者实际上使用了它不知道的项目的 Worker 类。像一个覆盖包类?它如何工作这种行为以及它是如何被调用的?
解决方案
This is a dependency injection only, you are able to access the child project(dependency) functionalities in your Test Project as long as it is in your classpath.
In your case, I see both Worker class is on the same package?
推荐阅读
- java - Java 实例变量不保留状态
- c# - 在 Razor 页面 MVC5 中嵌入视频 URL
- flutter - 在 Flutter 中创建可共享的图像/证书
- python - 从 csv 导入数据,其中每个列表被分成许多行
- excel - 当不包含来自 varLists 的值时删除列/行
- c# - 如果与临时表和更改跟踪结合使用,C# yield return 会导致问题吗?
- ios - 将 Apple 健康数据链接到 firebase 用户
- javascript - Apache Royale 在项目中读取文件 javascript
- python - `pipenv install` 失败并出现“ KeyError: 'url' ”
- java - 使用自定义 ApplicationEventPublisher 发送 Spring 域事件