java - 我们可以防止自己从导入的库中实例化 Java 类吗
问题描述
我有一个库类,即我从 JAR 加载的类,源代码不在我的控制范围内。我们在项目中的几个地方实例化了它,并且应该始终设置创建对象的属性。不幸的是,图书馆没有中央设置,所以我创建了一个子类:
public class MyClass extends LibraryClass {
public MyClass() {
super();
super.setSomeProperty();
}
}
然后我用 MyClass 替换了 LibraryClass 的所有实例。它工作正常,但我想防止我自己和我的同事将来实例化一个 LibraryClass。
是否可以将 LibraryClass(或其构造函数)标记为 Maven 或 Eclipse 或其他方式已弃用?这将是一个编译时解决方案。
或者是否可以在运行时使用一些 Spring/Aop 魔术来用 MyClass 替换所有实例化的 LibraryClass?
解决方案
如果您在应用程序中使用 Spring,并且所有 bean 实例化都是通过 Spring 完成的,则在应用程序启动时检查是否存在 type 的 bean LibraryClass
。如果存在则抛出异常。可以为用于 bean 实例化的任何其他框架实现类似的解决方案。
推荐阅读
- artifactory - 使用 API 阻止匿名用户从 Artifactory Pull 访问
- php - 如何使用子域访问主机上的文件
- python - 我的 python 代码拒绝为我正在制作的这个不和谐机器人运行
- python - Flask:CSS 和 JS 不会在 kubernetes POD 中加载
- c++ - 内部模板类继承
- sql - 如何从 SQLite 中的聚合函数返回关系
- file - 检查无效的文件描述符
- python - Python 数据透视表遍历每个值
- julia - 在Julia中找到多变量函数的不动点
- reactjs - useState React Hook set 方法不会在 onChange() 中立即更新状态