來源於how2j
github項目入口
Springboot Demo
Springboot可以理解爲就是一個配置很簡單的SSM框架
- 創建maven工程:
- pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.how2java</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot</name>
<description>springboot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
-
application.java
- 創建 Application.java,其註解 @SpringBootApplication 表示這是一個SpringBoot應用,運行其主方法就會啓動tomcat,默認端口是8080
- 代碼:
package com.how2java.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
-
HelloController.java
- 接着創建控制器類HelloController, 這個類就是Spring MVC裏的一個普通的控制器。
@RestController 是spring4裏的新註解,是@ResponseBody和@Controller的縮寫。 - 代碼:
package com.how2java.springboot.web; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping("/hello") public String hello() { return "Hello Spring Boot!"; } }
- 接着創建控制器類HelloController, 這個類就是Spring MVC裏的一個普通的控制器。
-
測試:
- 接下來就運行Application.java,run java application即可, 然後訪問地
http://127.0.0.1:8080/hello
- 接下來就運行Application.java,run java application即可, 然後訪問地
SpringBoot的部署方式
部署JAR包
通過命令行部署
- cd到項目目錄下:
cd D:\project\springboot_demo
- maven部署jar包:
mvn install
- 啓動Jar:
java -jar target/springboot-0.0.1-SNAPSHOT.jar
- 可以看到還發布到了配置的本地倉庫中
- target目錄:
- 配置倉庫生成jar包:
Ctrl+c
退出jar包運行mvn clean
:- 但是:
- eclipse中配置的地址沒刪除
- 猜測 eclipse中run as - mvn clean 可以刪除;但是我再eclipse裏跑的太慢了。。
部署WAR包
-
Springboot 和我們之前學習的web 應用程序不一樣,其本質上是一個 Java 應用程序,那麼又如何部署呢?
-
通常來說,Springboot 部署會採用兩種方式:全部打包成一個jar,或者打包成一個war。
-
下面講解 war 的方式。
-
修改Ap’plication
-
Application 修改爲如下代碼
- 新加@ServletComponentScan註解,並且繼承SpringBootServletInitializer 。
爲什麼要這麼改? 這是規定。。。。 要搞成war ,反正就得這麼改~ - 代碼:
package com.how2java.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.boot.web.support.SpringBootServletInitializer; @SpringBootApplication @ServletComponentScan public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
- 新加@ServletComponentScan註解,並且繼承SpringBootServletInitializer 。
-
修改Pom.xml
- pom.xml修改爲如下代碼,主要兩個改動
新加打包成war的聲明:<packaging>war</packaging>
spring-boot-starter-tomcat
修改爲 provided方式,以避免和獨立 tomcat 容器的衝突.表示provided 只在編譯和測試的時候使用,打包的時候就沒它了。- 代碼:
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.how2java</groupId> <artifactId>springboot</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot</name> <description>springboot</description> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <properties> <java.version>1.8</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
- pom.xml修改爲如下代碼,主要兩個改動
-
創建war包:
-
mvn clean package
:這樣就在 target 目錄下 生成了一個 springboot-0.0.1-SNAPSHOT.war 文件 -
-
package只是打包到target,install是安裝到本地倉庫
-
mvn clean package 相當於先clean 再package
-
-
部署到tomcat;
-
如果用 springboot-0.0.1-SNAPSHOT.war 這個文件名部署,那麼訪問的時候就要在路徑上加上springboot-0.0.1-SNAPSHOT。 所以把這個文件重命名爲 ROOT.war然後把它放進tomcat 的webapps目錄下。
-
-
Spring的熱部署
目前的Springboot,當發生了任何修改之後,必須關閉後再啓動Application類才能夠生效,顯得略微麻煩。 Springboot提供了熱部署的方式,當發現任何類發生了改變,馬上通過JVM類加載的方式,加載最新的類到虛擬機中。 這樣就不需要重新啓動也能看到修改後的效果了
- 在pom.xml中新增加一個依賴和一個插件就行了。
依賴:
dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 這個需要爲 true 熱部署纔有效 -->
</dependency>
插件:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
- 效果: