Java 包递归类访问
我正在基于以下结构的spring创建一个库(jar):Java 包递归类访问,java,spring,Java,Spring,我正在基于以下结构的spring创建一个库(jar): com.mycompany.mylib/ 外部api/ 内部对象/ 内部类/ 外部api中的类使用内部-*包中的类 如何使客户端只能看到外部api包?普通JAR文件不支持包级模块化。您所能做的就是在.internal…..*包中将类设置为私有,在外部…..*中将类设置为公共。然而,即使这样,也有人可以用您的内部包名声明一个包,并访问其中的类。如果您想要真正的模块化,您可以使用OSGI捆绑包。如果我将内部-*类包设为私有,我无法从外部
- com.mycompany.mylib/
- 外部api/
- 内部对象/
- 内部类/
如何使客户端只能看到外部api包?普通JAR文件不支持包级模块化。您所能做的就是在
.internal…..*
包中将类设置为私有,在外部…..*
中将类设置为公共。然而,即使这样,也有人可以用您的内部包名声明一个包,并访问其中的类。如果您想要真正的模块化,您可以使用OSGI捆绑包。如果我将内部-*类包设为私有,我无法从外部api包访问它们…如果您的要求可以通过将内部包设为私有来满足,那么您可以在外部包中创建实用程序类,并使用反射从内部包加载类。如果如果您愿意使用反射,那么您可以将内部包
保存在机密
文件夹中,这样它就不会在类路径上被访问。当您需要其中的类时,在外部包中,您可以在运行时使用ClassLoader.defineClass()从中加载类。您的意思是使用内部-*包中的一些公共工厂从外部-*包中加载包私有类,或者,在工厂内部有一些逻辑来禁止从com.mycompany.mylib外部访问。。。这将满足我的需要,但我担心这里的一些开销。我希望有更优雅的解决方案。