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。