1. 程式人生 > >spring-boot的快速開發

spring-boot的快速開發

1.使用Intellij中的Spring Initializr來快速構建Spring Boot/Cloud工程

選單欄中選中Files->New->Projects,這個Initializr Service URL 我們一般使用預設,

也就是spring官方提供的spring  Initializr工具進行建立

點選下面的Next之後,稍等片刻,出現下面的頁面,我們可以通過

Language選項更改編寫語言,Type選項更改構建的工程型別

點選Next選項,進入到springboot的版本選擇和依賴管理,除了springboot的依賴管理還能看到springcloud的依賴管理

再點選Next,進入到建立的最後一步,可以專案的名稱,專案地址,點選Finsh完成專案建立

2.SpringBoot之HelloWorld的專案詳解

springboot的中文意義就是引導的意思,就是簡化spring應用從搭建到開發的過程,即開箱即用,只要通過java-jar或者Tomcat或者maven的外掛run或者shell指令碼就可以啟動專案,springboot只要很少的應用配置,遵循這習慣大於配置的原則,

建立SpringBoot的專案,已經在上面說過了,建立SpringBoot的web專案,需要選中web即可,工程的型別我們一般都是maven Properject

專案的POM檔案:

<groupId>com.example</groupId>
    <artifactId>springbootdemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springbootdemo</name>
    <description>Demo project for Spring Boot</description>

    <parent><!--springboot 啟動父依賴-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties><!--springboot專案的預設編碼格式和jdk版本-->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies><!--springboot 的web依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency><!--springboot的test依賴
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin><!--springboot的maven打包外掛-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

專案的controller檔案

@RestController
public class helloController {
    @RequestMapping("/")
    public String Hello(){
        return "Hello SpringBoot";
    }
}

@RestController和@RequestMapping註解是來自springMVC,他們不是springboot的特定部分

@RestController可以服務於JSON和XML或者其他,這裡是以spring的形式進行結果渲染

@RequestMapping提供路由資訊,將“/”路徑的HTTP Request對映到Hello方法進行處理

專案的啟動類檔案

/**
 * springboot專案的啟動類檔案
 */

@SpringBootApplication
public class SpringbootdemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootdemoApplication.class, args);
    }
}

@SpringBootApplication是springboot應用的標識,SpringbootdemoApplication很簡單,一個main方法,springApplication引導應用,將SpringbootdemoApplication自身當作引數傳遞給run方法,具體的run方法會啟動嵌入式的Tomcat並初始化Spring環境和Spring元件

專案的測試檔案

一個好的專案,是需要測試Test的

/**
 * Spring Boot HelloWorldController 測試 - {@link HelloWorldController}
 *
 * Created by bysocket on 18/7/30.
 */
public class HelloWorldControllerTest {

    @Test
    public void testSayHello() {
        assertEquals("Hello,SpringBoot!",new helloController ().Hello());
    }
}

3.SpringBoot的配置檔案詳解,自定義屬性,隨機數,多環境配置

3.1自定義屬性

在使用Spring Boot的時候,通常也是需要定義一些自己使用的屬性的,

在配置檔案application.properties中可以這樣寫:

com.didispace.blog.name=程式設計師

com.didispace.blog.title=spring boot

然後通過@Value("${屬性名}")註解來載入對應的配置屬性

@Component
public class BlogProperties {

    @Value("${com.didispace.blog.name}")
    private String name;
    @Value("${com.didispace.blog.title}")
    private String title;

    // 省略getter和setter

}

3.2引數間的引用

在配置檔案application.properties中各個引數之間也可以直接引用

com.didispace.blog.name=程式猿
com.didispace.blog.title=Spring Boot
com.didispace.blog.desc=${com.didispace.blog.name}正在努力寫《${com.didispace.blog.title}》

3.3使用隨機數

有時候,有些引數我們希望它不是一個固定值,比如金鑰,伺服器埠,spring boot 的屬性配置檔案中可以通過

${random}來生產int值,long值或者String字串,來支援屬性的隨機值

# 隨機字串
com.didispace.blog.value=${random.value}
# 隨機int
com.didispace.blog.number=${random.int}
# 隨機long
com.didispace.blog.bignumber=${random.long}
# 10以內的隨機數
com.didispace.blog.test1=${random.int(10)}
# 10-20的隨機數
com.didispace.blog.test2=${random.int[10,20]}

3.4通過命令列設定屬性值

在命令列執行時,連續的倆個減號--就是對application.properties中的屬性值進行賦值的標識,

例如

java -jar xxx.jar --server.port=8888命令,等價於我們在application.properties中新增屬性server.port=8888,

也可以通過設定下面的程式碼來遮蔽命令列改變應用執行的引數

SpringApplication.setAddCommandLineProperties(false)。

3.5多環境配置

在開發springboot應用的時候,通常會用到幾個不同的環境,比如開發環境,測試環境,生產環境等

在springboot配置多環境檔名時,需要滿足application-{profile}.properties的格式,其中profile對應環境標識,

比如 application-dev.properties  開發環境

         application-test.properties  測試環境

         application-prod.properties  生產環境

至於那個具體的配置檔案被載入,需要在application.properties檔案中通過

spring.profiles.active屬性進行配置,其值對應{profile}的值

小結:常用的springboot樣板配置已經在springboot的官方文件中給出