OSGI包内的Pojos

时间:2013-05-28 16:56:43

标签: java osgi pojo

在OSGI应用程序上,可以将应用程序Pojos放在Bundle中并通过它访问它们吗? 我的意思是,只为应用程序pojos使用Bundle是一种很好的技术吗?

4 个答案:

答案 0 :(得分:1)

想想你的pojo包未能加载的情况,因为说任何XYZ原因。 是不是意味着所有依赖的捆绑/功能都会失败?

OSGi用于制作模块化的东西,就我的知识而言是一个模块,是一段代码,它可以单独做一件事或者说具有最少的依赖性。

答案 1 :(得分:1)

POJO意味着"普通的旧Java对象",所以你似乎在说所有普通的Java对象都应该在一个包中。这是否意味着所有"非平原" Java对象应该在其他包中吗?

这听起来不是模块化应用程序的好标准。模块应该执行某些特定的逻辑功能,因此bundle中的所有类都应该与执行该功能相关。将类分成捆绑包是没有意义的,这取决于它们是否是"普通"或者"非平原",无论这意味着什么。

答案 2 :(得分:1)

在模块化中,您希望优化内聚,这将导致最小的耦合。凝聚力意味着“彼此相关”。 java.util的一个很好的例子就是java.util,因为需要Collection的人不一定需要Runnable(Util包或libs是可怕的凝聚力的主要例子,因为他们在一起的唯一原因是汇总,因为作者总体上认为模块会变得太慢。)

如果你将事物放在一起(聚合),你也会聚合它们的传递依赖关系。例如,如果你使用Spring的一小部分,它通常会在整个弹簧中拖动。如果您正在制作一个依赖于弹簧的应用程序,那么这不是一个严重的问题。一旦你结合起来,实际上最好将这种耦合用于最大值。

然而......

构建大型应用程序最好通过可在不同应用程序之间独立设计,测试和重用的较小模块来完成。设计这些可​​重用模块的技巧是限制它们的依赖关系,以便应用程序不受那些(传递)依赖项的约束。

那么你应该将POJO放在一个单独的包中吗?如果它们与应用程序耦合而不是可重用,只需将它们与应用程序一起使用即可。如果您有可重复使用的部件,那么将这些可重复使用的部件放在单独的模块中。它们是POJO的事实是无关紧要的,它是你想要实现的最小耦合。

答案 3 :(得分:0)

我认为,如果POJO将被大量广泛用于捆绑包,那么为POJO提供单独的捆绑包是个好主意。确实如果这个捆绑包失败,它将导致其他捆绑包依赖它也会失败。但这是一个理想的行为,因为pojo包不应该在正常条件中失败,因为 NOT 应该根据定义具有业务逻辑。如果它失败了应该表明一些可怕的错误,值得你注意。

在同一个包中打包带有应用程序逻辑的pojos也意味着你需要分发大量只需要访问pojo的代码。