亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

使用idea創(chuàng)建一個(gè)web的Gradle項(xiàng)目

來(lái)源:似水的流年 發(fā)布時(shí)間:2018-09-18 16:04:33 閱讀量:978

1 生成基本的項(xiàng)目結(jié)構(gòu)

1.1    使用Spring Initializr新建一個(gè)項(xiàng)目。

TIM截圖20180412143313.jpg

注意:這里Packaging要選war包,這個(gè)選項(xiàng)對(duì)自動(dòng)生成的代碼有影響,下面會(huì)說(shuō)。

TIM截圖20180412143329.jpg

這里就算不勾選Web,由于之前選了打war包,也會(huì)生成web項(xiàng)目。

TIM截圖20180412143520.jpg

TIM截圖20180412143558.jpg

TIM截圖20180412143610.jpg

gradle推薦使用默認(rèn)的,會(huì)自動(dòng)下載,如果下載很慢的,那就選Use local gradle distribution,指定自己本地的gradle路徑。

1.2 gradle文件配置

創(chuàng)建完項(xiàng)目后,可能在右下角會(huì)看到這個(gè)提示

TIM截圖20180412143731.jpg

表示gradle文件已改變,是否需要導(dǎo)入新的依賴(lài),這里我們點(diǎn)Enable Auto-Import,這個(gè)選項(xiàng)的意思是只要你改動(dòng)了build.gradle文件,就會(huì)自動(dòng)刷新依賴(lài)

注意:下次重啟Intellij可能會(huì)出現(xiàn)下圖的提示

1.jpg

那就點(diǎn)Create Default Context,創(chuàng)建默認(rèn)的Context

TIM截圖20180412143919.jpg

我們前面Packaging勾選war產(chǎn)生的效果就是
1.增加了apply plugin: 'war',war插件 
2.providedRuntime('org.springframework.boot:spring-boot-starter-tomcat'),表示代碼在運(yùn)行時(shí)需要的依賴(lài),providedRuntime是指依賴(lài)的Jar包不會(huì)被加到War包里面。

然后配置熱部署,熱部署是指一旦項(xiàng)目run起來(lái),我們就不需要再次run了,只需要編譯修改的文件或者編譯整個(gè)工程,修改就會(huì)自動(dòng)部署,這里還是用spring的springloaded。 

在buildscript的dependencies中加入:
classpath 'org.springframework:springloaded:1.2.7.RELEASE'

之后代碼有修改只需要編譯修改了的代碼(單個(gè)文件:菜單欄build/recompile….,多個(gè)就要在左邊的Project中選中修改的文件,右鍵,rebuild,或者直接整個(gè)工程重新編譯)就行了。


1.3 工程目錄配置

工程目錄中,基本配置其實(shí)都自動(dòng)生成好了,自動(dòng)生成的文件目錄如下圖所示:

1.png

這里有兩個(gè)類(lèi),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還有一個(gè)效果就是會(huì)生成一個(gè)ServletInitializer。因?yàn)轫?xiàng)目要部署到tomcat,啟動(dòng)類(lèi)必須繼承自SpringBootServletInitializer,主要起到web.xml的作用。 
注意:這里我們解釋下@SpringBootApplication
@SpringBootApplication等價(jià)于@Configuration、@EnableAutoConfiguration、@ComponentScan,查看SpringBootApplication注解可以發(fā)現(xiàn)@ComponentScan并沒(méi)有添加任何的參數(shù),它會(huì)自動(dòng)掃描工程里所有的@Component, @Service, @Repository, @Controller并把它們注冊(cè)為Spring Beans。


其實(shí)現(xiàn)在一個(gè)最簡(jiǎn)單的springboot項(xiàng)目我們已經(jīng)搭建完成了。什么?不相信?,你可以運(yùn)行一下HexiApplication這個(gè)文件呀。會(huì)報(bào)你未配置dataSource,我們?nèi)缦聢D所示進(jìn)行一下配置即可完成一個(gè)最簡(jiǎn)單的springboot項(xiàng)目進(jìn)行跑通
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
賬號(hào)密碼當(dāng)然你要配置成你自己的。OK 項(xiàng)目跑起來(lái)了。最簡(jiǎn)單的springboot項(xiàng)目搭建完成。 

2 控制器的編寫(xiě)
按如圖所示包結(jié)構(gòu)新建包和類(lèi)。

1.jpg

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都沒(méi)有@AutoWired注解(@Autowired注釋可以對(duì)類(lèi)成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動(dòng)裝配的工作。 通過(guò)@Autowired的使用來(lái)消除set,get方法)。因?yàn)镾pring的文檔寫(xiě)到了如果只有一個(gè)構(gòu)造函數(shù),就可以省略這個(gè)注釋。如果有多個(gè),則要加上。
@RestController("/hello")
public class HelloController {

    private HelloWorld helloWorld;

    @AutoWired
    public HelloController(HelloWorld helloWorld) {
        this.helloWorld = helloWorld;
    }

    ...
}

@AutoWired會(huì)尋找和構(gòu)造函數(shù)參數(shù)類(lèi)型匹配的bean,把它們作為傳入?yún)?shù)來(lái)創(chuàng)建HelloController。

@Component泛指組件,一般用于普通POJO,當(dāng)組件不好歸類(lèi)的時(shí)候,也可以使用這個(gè)注解進(jìn)行標(biāo)注。 
@Service用于標(biāo)注業(yè)務(wù)層組件
@RestController用于標(biāo)注控制層組件。@RestController同時(shí)包含了@Controller、@ResponseBody。
@GetMapping也是一個(gè)組合注解,相當(dāng)于@RequestMapping(method = RequestMethod.GET)的縮寫(xiě)。 類(lèi)似的還有@PostMapping、@PutMapping、@DeleteMapping。

3 運(yùn)行應(yīng)用
如圖所示,打開(kāi)右邊的gradle,找到bootRun運(yùn)行。跑起來(lái)后,下面的run工具窗口會(huì)一直顯示在運(yùn)行。此時(shí)打開(kāi)瀏覽器,輸入http://localhost:8080/hello,就可以看到Hello World!了。如果運(yùn)行出錯(cuò),則在Terminal工具窗口輸入`./gradlew bootRun’看錯(cuò)誤日志。

TIM截圖20180412144610.jpg

TIM截圖20180412144618.jpg

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

1.jpg

注意deployment標(biāo)簽內(nèi)的設(shè)置

2.jpg

完成以后,就可以從tomcat中調(diào)試了。


標(biāo)簽: PHP
分享:
評(píng)論:
你還沒(méi)有登錄,請(qǐng)先