我试图理解Web服务是如何工作的,我遇到了本教程
现在,我已经看到Spring正在企业应用程序中使用,并且总是想知道主要方法在哪里以及一切如何工作?每当我去Spring教程时,他们都将从beanFactory和Contexts开始,不是什么,所有这些都在主java方法中,并且从那里开始按需要继续获取bean.这与我在应用程序中看到的完全不同.
有人能告诉我在这种情况下弹簧是如何工作的.什么是通话顺序.我想某处会有一些隐藏的主要方法,但我不确定.
通常如果我从命令行运行一个简单的java项目,我会这样做java mainClass
.现在,在这种情况下会发生什么.
谢谢
还有一个主要方法,它不是由应用程序的开发人员编写的,而是由容器的开发人员编写的.
您仍然可以通过使用调试器来查看调用的main方法,如下所示:
在一些初始化方法中放置断点,例如某些servlet Servlet.init()的init方法
当breapoint命中时,向下滚动调用轨迹,main方法应该在底部.
这是一个码头的例子:
为了看到这一点,我们需要将断点放在初始化方法中,以便我们获得应用程序的主线程.
将断点放在请求处理而不是初始化方法中会在堆栈跟踪的底部显示Thread.run()而不是main().
Thread.run()等同于主线程以外的线程的主方法.
因此主要方法仍然存在,它只是在容器级别处理.
您没有看到任何显式main
方法,因为它是一个Web项目.该项目内置于Web应用程序归档(WAR)文件中,该文件部署到Web服务器/ servlet容器中,例如本教程中的Tomcat.
Web应用程序不必包含main
方法.这是因为您不需要从Web应用程序中显式启动任何Java进程.在深度的某个地方,Tomcat调用了一个main
由它构建的代码的方法.这发生在服务器启动时.
然后,它会将您的代码绑定到传入的HTTP调用,但它不会为此启动新进程.它宁愿开始新的线程.
Web应用程序没有main; 正在运行的"程序"实际上是Web容器(Apache Tomcat,Glassfish,JBoss,Weblogic等等),该程序将为您部署到其中的Web应用程序提供服务.您可能希望阅读JEE教程以了解和理解Java Web环境是什么.
https://docs.oracle.com/javaee/7/tutorial/