Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将大型java应用程序分解为组件?_Java_Spring_Hibernate_Service_Components - Fatal编程技术网

如何将大型java应用程序分解为组件?

如何将大型java应用程序分解为组件?,java,spring,hibernate,service,components,Java,Spring,Hibernate,Service,Components,我正在使用spring、hibernate和mysql编写一个java web应用程序。应用程序越来越大,因此我想将其分解为更小的部分,例如更小的项目、组件或任何可能的方式。例如,我有登录和图像上传功能,我不希望这两个都在一个代码库或项目中。我希望能够像独立的服务一样单独使用这些服务。有没有办法做到这一点,例如,将图像上传功能转换成jar,然后在实际项目中引用这个jar?企业项目是如何分割的 希望这是有意义的,请建议,如果我走在正确的方向,因为这是我的第一个项目?如果有人能给我举个小例子或推荐阅

我正在使用spring、hibernate和mysql编写一个java web应用程序。应用程序越来越大,因此我想将其分解为更小的部分,例如更小的项目、组件或任何可能的方式。例如,我有登录和图像上传功能,我不希望这两个都在一个代码库或项目中。我希望能够像独立的服务一样单独使用这些服务。有没有办法做到这一点,例如,将图像上传功能转换成jar,然后在实际项目中引用这个jar?企业项目是如何分割的

希望这是有意义的,请建议,如果我走在正确的方向,因为这是我的第一个项目?如果有人能给我举个小例子或推荐阅读,那就太好了

提前感谢

试试看。如果您使用的是Spring,那么您需要利用OSGi规范中的声明性服务和可能的蓝图容器来利用您迄今为止所做的工作

试着阅读Richard S.Hall、Karl Pauls、Stuart McCulloch和David Savage的《OSGi在行动》一书,了解这项技术

OSGi是一种用于java软件开发的模块化方法,它强制创建松散耦合的服务。从OSGi联盟网站引用:

OSGi技术是定义Java动态组件系统的一组规范。这些规范通过为大规模分布式系统以及小型嵌入式应用程序提供模块化体系结构来降低软件复杂性

可以看出,Hibernate支持OSGi。至于OSGi实现,我推荐,但是还有许多其他有效的OSGi实现。由于您的项目是一个web应用程序,您还可以检查

EclipseRT的Virgo是一个完全基于模块的Java应用服务器,旨在以高度的灵活性和可靠性运行企业Java应用程序和Spring支持的应用程序

特别是,

支持vanilla WAR文件及其在WEB-INF/lib中的所有依赖项,以及WEB应用程序捆绑包,这些文件通过OSGi清单元数据、OSGi WEB容器规范的参考实现、基于嵌入式Apache Tomcat并使用标准Tomcat server.xml配置导入其依赖项


我最终使用了maven模块和maven依赖关系管理功能。我创建了一个单独的maven项目,并根据需要不断添加maven模块,例如创建了一个用于图像上传的模块,一个用于公共库的模块等等。 然后将这些模块中的每一个打包为jar文件。然后,我使用maven依赖项将这些jar文件中的每一个导入到我的主web项目中


到目前为止,它似乎效果很好。希望这对其他人也有帮助

小提示,始终遵循单一责任原则