做爲一名Java開發者您是否會遇到這種狀況:新增一個方法或字段必須重啓tomcat才能對其進行調試?java
有沒有辦法使得不重啓tomcat就能調試呢.spring-loaded就能夠.git
類似產品(Jreloader : http://blog.csdn.net/suwing6406029/article/details/37996035)github
spring-loaded是一個開源項目,項目地址:https://github.com/spring-projects/spring-loadedweb
且看下面這一段話:spring
Spring Loaded allows you to add/modify/delete methods/fields/constructors. The annotations on types/methods/fields/constructors can also be modified and it is possible to add/remove/change values in enum types.瀏覽器
意思是它容許你動態得新增/修改/刪除某個方法/字段/構造方法,一樣能夠修改做用在類/方法/字段/構造方法上的註解.也能夠新增/刪除/改變枚舉中的值.tomcat
下面咱們就來實驗一把.app
1.下載spring-loaded,我這裏下在的是springloaded-1.2.5.RELEASE.jar,把jar放在C盤根目錄eclipse
2. eclipse新建一個web工程,名爲testsl,注意添加tomcat對應jarwebapp
2. 新建一個Servlet,名爲TestServlet,內容以下:
[java] view plain copy
3. 右鍵項目->Run as->Run configurations... 在tomcat啓動項添加VM參數-javaagent:C:/springloaded-1.2.5.RELEASE.jar -noverify
4. 啓動tomcat,瀏覽器輸入http://localhost/testsl/TestServlet
此時會正常打印hello world
5. server.xml 修改
<Context docBase="test" path="/test" reloadable="false" source="org.eclipse.jst.jee.server:test"/>
reloadable="true" 改成 reloadable="false"
5. 在TestServlet中添加一個方法和一個屬性,以下
[java] view plain copy
修改完後,直接刷新瀏覽器,此時會打印
hello world Jim
這樣,咱們不用重啓tomcat就能直接調試程序了.
上文所說的是spring-loaded在開發模式中的使用.接下來在講下線上模式如何使用.
線上模式使用原理跟開發模式同樣
1. 把springloaded-1.2.5.RELEASE.jar放到tomcat的bin文件夾下
2. 打開bin下的catalina.bat,添加以下一句
set JAVA_OPTS=-javaagent:springloaded-1.2.5.RELEASE.jar -noverify
這樣就完成了spring-loaded的安裝,可以檢測tomcat下部署的webapp,在不重啓tomcat的狀況下,實現應用的熱部署。
關於多項目的自動加載:
可經過eclipse的Build Path -> Source -> Link Source 來實現。選定到依賴項目的src目錄上,若是爲maven或者gradle項目 須要選擇到 src/main/java 目錄上。