使用idea創建一個web的Gradle項目
- 2019 年 12 月 7 日
- 筆記
1 生成基本的項目結構
1.1 使用Spring Initializr新建一個項目。

注意:這裡Packaging要選war包,這個選項對自動生成的程式碼有影響,下面會說。

這裡就算不勾選Web,由於之前選了打war包,也會生成web項目。



gradle推薦使用默認的,會自動下載,如果下載很慢的,那就選Use local gradle distribution,指定自己本地的gradle路徑。
1.2 gradle文件配置
創建完項目後,可能在右下角會看到這個提示

表示gradle文件已改變,是否需要導入新的依賴,這裡我們點Enable Auto-Import,這個選項的意思是只要你改動了build.gradle文件,就會自動刷新依賴
注意:下次重啟Intellij可能會出現下圖的提示

那就點Create Default Context,創建默認的Context

我們前面Packaging勾選war產生的效果就是 1.增加了apply plugin: 'war',war插件 2.providedRuntime('org.springframework.boot:spring-boot-starter-tomcat'),表示程式碼在運行時需要的依賴,providedRuntime是指依賴的Jar包不會被加到War包裡面。
然後配置熱部署,熱部署是指一旦項目run起來,我們就不需要再次run了,只需要編譯修改的文件或者編譯整個工程,修改就會自動部署,這裡還是用spring的springloaded。
在buildscript的dependencies中加入: classpath 'org.springframework:springloaded:1.2.7.RELEASE'
之後程式碼有修改只需要編譯修改了的程式碼(單個文件:菜單欄build/recompile….,多個就要在左邊的Project中選中修改的文件,右鍵,rebuild,或者直接整個工程重新編譯)就行了。
1.3 工程目錄配置
工程目錄中,基本配置其實都自動生成好了,自動生成的文件目錄如下圖所示:

這裡有兩個類,HexiApplication和ServletInitializer。
public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(HexiApplication.class); } }
@SpringBootApplication public class HexiApplication { public static void main(String[] args) { SpringApplication.run(HexiApplication.class, args); } }
Packaging勾選war還有一個效果就是會生成一個ServletInitializer。因為項目要部署到tomcat,啟動類必須繼承自SpringBootServletInitializer,主要起到web.xml的作用。 注意:這裡我們解釋下@SpringBootApplication @SpringBootApplication等價於@Configuration、@EnableAutoConfiguration、@ComponentScan,查看SpringBootApplication註解可以發現@ComponentScan並沒有添加任何的參數,它會自動掃描工程里所有的@Component, @Service, @Repository, @Controller並把它們註冊為Spring Beans。
其實現在一個最簡單的springboot項目我們已經搭建完成了。什麼?不相信?,你可以運行一下HexiApplication這個文件呀。會報你未配置dataSource,我們如下圖所示進行一下配置即可完成一個最簡單的springboot項目進行跑通 spring.datasource.url=jdbc:mysql://localhost:3306/maxrocky spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.jpa.database = mysql 帳號密碼當然你要配置成你自己的。OK 項目跑起來了。最簡單的springboot項目搭建完成。
2 控制器的編寫 按如圖所示包結構新建包和類。

HelloController
@RestController("/hello") public class HelloController { private HelloWorld helloWorld; public HelloController(HelloWorld helloWorld) { this.helloWorld = helloWorld; } @GetMapping public String hello() { return helloWorld.hello(); } }
HelloWorld
@Component public class HelloWorld { public String hello() { return "Hello World!"; } }
這裡我們的HelloWorld或HelloController都沒有@AutoWired註解(@Autowired注釋可以對類成員變數、方法及構造函數進行標註,完成自動裝配的工作。 通過@Autowired的使用來消除set,get方法)。因為Spring的文檔寫到了如果只有一個構造函數,就可以省略這個注釋。如果有多個,則要加上。 @RestController("/hello") public class HelloController { private HelloWorld helloWorld; @AutoWired public HelloController(HelloWorld helloWorld) { this.helloWorld = helloWorld; } … }
@AutoWired會尋找和構造函數參數類型匹配的bean,把它們作為傳入參數來創建HelloController。 @Component泛指組件,一般用於普通POJO,當組件不好歸類的時候,也可以使用這個註解進行標註。 @Service用於標註業務層組件 @RestController用於標註控制層組件。@RestController同時包含了@Controller、@ResponseBody。 @GetMapping也是一個組合註解,相當於@RequestMapping(method = RequestMethod.GET)的縮寫。 類似的還有@PostMapping、@PutMapping、@DeleteMapping。
3 運行應用 如圖所示,打開右邊的gradle,找到bootRun運行。跑起來後,下面的run工具窗口會一直顯示在運行。此時打開瀏覽器,輸入http://localhost:8080/hello,就可以看到Hello World!了。如果運行出錯,則在Terminal工具窗口輸入`./gradlew bootRun』看錯誤日誌。


tomcat部署 之前提到過tomcat,但這個是可選的,如果你安裝了tomcat,那如何在tomcat里調試呢? 點擊菜單里的Run->EditConfigurations,在彈出的菜單的左上角點擊加號,然後選擇tomcat server->local,做如下圖中的配置:

注意deployment標籤內的設置

完成以後,就可以從tomcat中調試了。