1. 程式人生 > >Spring-boot參考(二)

Spring-boot參考(二)

依賴管理

繼承starter parent

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>

在parent中,還定義了 其他許多 依賴的版本,如果 想要改變其中某個的話,就應該在properties中 指定其版本,如:

<properties>
<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version> </properties>

不使用parent POM

可能你不想使用parent,或者已經使用了其他parent。 還有一種方法可以用到 spring boot的依賴,即:

<dependencyManagement>
     <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency
>
</dependencies> </dependencyManagement>

這是想要改變 spring-boot-dependencies 中的某個 庫的版本號 ,應該用下面的方法, 將要改變的部分放在前面:

<dependencyManagement>
    <dependencies>
        <!-- Override Spring Data release train provided by Spring Boot -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>Fowler-SR2</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.9.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

spring boot 1.5.x 預設支援的JDK 1.6, 如果你想指定 1.8的話,加上一個屬性

<properties>
    <java.version>1.8</java.version>
</properties>

打包外掛

spring boot提供一個 maven plugin 來生成一個可執行的包。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

預設 mvn package 之後 生成的 檔名是 artifactId + version 如:test1-0.0.1-SNAPSHOT.jar . 如果想生成的檔名就叫 test1, 可以在build中加一個屬性

    <build>
        <finalName>test</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

Starters

Starters 是一組 相關的包,這樣做是 便於 新增依賴。
名字一般是 spring-boot-starter-* 。

spring 提供了很多starters 都在 org.springframework.boot GroupId下 ,詳細見 Spring Boot application starters

spring-boot-starter-actuator 這個包在生產環境很有用,提供一些監控方面的支援

結構化程式碼

1 要有包名

@SpringBootApplication

這個註解的作用是,指定basePackage,這樣Spring就知道去哪裡掃描了。

@Configuration

被用在一些配置類上, Spring boot 不再鼓勵xml的配置方式,而是使用Java程式碼來配置。 可以寫一些單獨的類,來進行配置, 這些類上,加上這個註解。

自動配置

使用
@EnableAutoConfiguration 或者 @SpringBootApplication,將開啟自動配置功能。
自動配置的意思就是,如果你的classpath下有redis的包,即使你自己沒有 配置redis ,Spring也會自覺的 連線 localhost:6379 ,來例項化一個RedisConnectionFactory。 這有時會很方便,有時很自以為是很討厭。

在application.yml 中 設定 debug=true, 在Spring啟動時, 會打印出 自動配置了哪些類。

有時候自動配置很討厭,可以關閉它:

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

或者使用spring.autoconfigure.exclude 屬性在application.yml中。

如果Bean只有一個 建構函式, 可以省略 建構函式上的 @Autowired。

@SpringBootApplication

因為 Spring boot的主函式上 總是有 @Configuration, @EnableAutoConfiguration and @ComponentScan 這三個註解, 於是Springboot 提供了一個新的註解 @SpringBootApplication 來等效表示這三個註解。

如何執行程式

1,在IDE執行,這樣方便除錯。

2 , 打成jar包

java -jar target/myproject-0.0.1-SNAPSHOT.jar

在生產環境時, 需要再多加一些引數,修改記憶體,堆疊之類。

3 用mvn執行

mvn spring-boot:run

自動重啟

在開發時候 ,修改一個地方,往往需要重新啟動。
增加下面這個依賴,可以自動監聽 classpath下的檔案,有變動時,自動重啟。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

IDEA中,出發重啟的方法是,修改完檔案後 Build -> Make Project。