Java SpringMVC插件体系结构

Java SpringMVC插件体系结构,java,asp.net-mvc,spring,plugins,spring-mvc,Java,Asp.net Mvc,Spring,Plugins,Spring Mvc,我是JavaEE的新手,但对ASP.NETMVC有一些经验。有了ASP.NET MVC,我知道我们可以用ASP.NET MVC web app创建一个插件架构,这样你就可以创建一个具有MVC结构的dll,并将其放入现有的ASP.NET MVC web app中,使其在不编译web app的情况下工作 我想知道这种架构在SpringMVC中是否可行。例如,当我制作一个具有MVC结构的jar(或war)文件并将其放入现有的Spring MVC web应用程序中时,它应该可以工作,而无需重新编译web

我是JavaEE的新手,但对ASP.NETMVC有一些经验。有了ASP.NET MVC,我知道我们可以用ASP.NET MVC web app创建一个插件架构,这样你就可以创建一个具有MVC结构的dll,并将其放入现有的ASP.NET MVC web app中,使其在不编译web app的情况下工作


我想知道这种架构在SpringMVC中是否可行。例如,当我制作一个具有MVC结构的jar(或war)文件并将其放入现有的Spring MVC web应用程序中时,它应该可以工作,而无需重新编译web应用程序。如果这是可能的,我如何才能做到这一点?任何参考资料都将不胜感激。

听起来您想搜索“hotdeploy”

您要求的不是Spring的特性,而是JVM和应用服务器的特性。应用服务器能够看到您的类确实发生了变化,并且使用一些巧妙的类加载器技巧,它可以在新版本可用时将其加载到运行的JVM中。Java实际上不是为这样工作而设计的,因此存在一些问题(ClassLoader、内存泄漏、hotdeploy是查找更多潜在问题和可能解决方案的好关键字)。我不建议将其用于生产,但它在开发过程中非常方便

由于这是应用服务器的一项功能,因此实际的详细信息取决于特定的应用服务器,并在其文档中进行了解释


如果您只是想要一些插件魔术,而不是真正的热部署,那么您还可以做其他事情。自定义类加载器可以从您想要的任何源(文件、网络、数据库..)加载类,然后您可以实例化这些类并将其与反射一起使用。(当您将war部署到Tomcat/JBoss或其他任何东西时,就会发生这种情况)。在jar/war文件中访问和动态重新加载非类资源要容易得多。

不需要重新编译就可以了,但可能不需要重新启动。您可以创建一个.jar,将其放入WEB-INF/lib目录。通过使用,您应该能够在启动时部署新控制器。您可以完全跳过视图,直接将数据输出到ServletResponse。从jar渲染视图可能是可能的,也可能是不可能的,我不知道。

听起来不错。重新启动部件是正常的。我相信在ASP.NETMVC中也是如此。谢谢你,伙计。