1. Spring Boot簡介
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化Spring應用的建立、執行、除錯、部署等。
Spring Boot預設使用tomcat作為伺服器,使用logback提供日誌記錄。
2. Spring Boot快速搭建
2.1 Maven專案構建
Maven構建網址:http://start.spring.io/
Spring Boot基礎結構:
◊ src/main/java:程式開發以及主程式入口
◊ src/main/resources:配置檔案
◊ src/test/java:測試程式
Spring Boot建議目錄結構:
com +- example +- myproject +- Application.java | +- domain | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- controller | +- CustomerController.java |
其中:
(1)Application.java:建議放到跟目錄下面,主要用於做一些框架配置。
(2)domain目錄:主要用於實體(Entity)與資料訪問層(Repository)
(3)service:主要是業務類程式碼
(4)controller:負責頁面訪問控制
2.2 專案結構及說明
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>libing</groupId> <artifactId>com-helloworld-api</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>com-helloworld-api Maven Webapp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <finalName>com-helloworld-api</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build> </project>
其中:
pom中parent設為 spring-boot-starter-parent ,建議使用最新的 RELEASE 版本。
spring-boot-starter:核心模組,包括自動配置支援、日誌和YAML。
package com.libing.helloworld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldApplication.class, args);
}
}
其中:
@SpringBootApplication:等同於預設的屬性 @Configuration,
@EnableAutoConfiguration,
@ComponentScan。
@Configuration、@ComponentScan是spring框架的語法,用於程式碼方式建立配置資訊和掃描包。
在根包啟動類新增@ComponentScan註解而不需要新增任何引數,Spring Boot會在根包下面搜尋注有@Component, @Service,@Repository, @Controller註解的所有類,並將他們註冊為Spring Beans。
@EnableAutoConfiguration是spring boot語法,表示將使用自動配置。
@EnableAutoConfiguration:根據pom配置(具體的依賴)來判斷這是一個什麼應用,並建立相應的環境。
SpringApplication:啟動管理器,用於從main方法啟動Spring應用的類。
預設執行以下步驟:
(1)建立一個合適的ApplicationContext例項 (取決於classpath)。
(2)註冊一個CommandLinePropertySource,以便將命令列引數作為Spring properties。
(3)重新整理application context,載入所有單例beans。
(4)啟用所有CommandLineRunner beans。
預設,直接使用SpringApplication 的靜態方法run()。可以建立例項,並自行配置需要的設定。
package com.libing.helloworld.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/helloworld") public class HelloWorldController { @GetMapping public String Index() { return "Hello World!"; } }
其中:
@RestController:controller中的方法都以json格式輸出
server.port=9000
2.3 修改啟動埠
(1)通過實現EmbeddedServletContainerCustomizer介面
package com.libing.helloworld; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; import org.springframework.boot.web.support.SpringBootServletInitializer; @SpringBootApplication public class HelloWorldApplication extends SpringBootServletInitializer implements EmbeddedServletContainerCustomizer { public static void main(String[] args) { new SpringApplicationBuilder(HelloWorldApplication.class).web(true).run(args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(HelloWorldApplication.class); } @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.setPort(9000); } }
(2)設定SpringApplication.run引數args
SpringApplication.run(HelloWorldApplication.class, "--server.port=9000");
(3)application.properties配置檔案
server.port=9000