Maven構建項目模板
maven構建的是maven風格的純凈模板,要轉變成spring boot項目需要自己添加依賴等配置。
mvn archetype:generate: Maven插件原型是一個Maven項目模板工具包。
-DgroupId 包名
-DartifactId 項目名
-DarchetypeArtifactId 類型maven-archetype-quickstart,創建一個Java Project,maven-archetype-webapp,創建一個Web Project
-DinteractiveMode 是否使用交互模式,如果為false,非交互式的命令后直接創建,否則會有控制台提示輸入操作
先使用mvn命令構建Maven項目
mvn archetype:generate -DinteractiveMode=false -DgroupId=com.autumn -DartifactId=springbootdemo -Dversion=1.0.0
成功導入IDEA后模板如下,可以看出只是個叫springbootdemo的maven項目,目前和springboot還一點關系沒有。
IDEA直接構建Spring Boot
前提配置
用IDEA構建的Spring Boot項目沒有Maven模板框架,只有依賴Spring Boot的pom.xml,和上面用Maven創建的剛好相反,那么要如何創建Spring Boot項目既有Maven的目錄結構又有springboot的pom依賴呢?
設置Setting/Other Setting -> Build,Execution,Deployment -> Build Tools -> Runner中把VM Options設置為 -DarchetypeCatalog=internal ,這樣創建的項目就有maven的目錄結構了。
創建Spring Boot項目
maven配置
輸入Maven必須的一些配置
spring項目類型選擇
選擇Spring Web
創建成功
創建結果如下,帶有spring boot依賴的pom.xml和帶有maven目錄結構的項目。mvnw(Maven Wrapper)是在沒有安裝maven或者maven版本不符的情況下使用的代替mvn的命令。
如果不設置Setting中的Maven配置創建的項目架構如下,會缺少src那部分,只能自己配置。
Web創建
去spring官網https://start.spring.io/,根據需求點擊需要的依賴,然后點擊下載,生成的demo和IDEA生成的一樣,只不過POM.xml中多了一些其他配置的依賴。
POM添加依賴
在pom文件里添加Spring Boot依賴,如果是通過IDEA創建,這里就已經創建好了。
對於SpingBoot測試Junit至少是4.1-4.2以上的版本,所以把版本號刪除默認的就行
JAR包依賴配置
<parent> <!-- 指定Spring Boot的版本2.2.2.BUILD-SNAPSHOT --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.BUILD-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent>
<dependencies> <!--spring boot核心包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
<build> <plugins> <!--可以將應用打包成一個可執行的jar包的插件--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
倉庫配置
也可以指定jar包和插件的倉庫
<!--jar包倉庫--> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </repository> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <!--插件倉庫--> <pluginRepositories> <pluginRepository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </pluginRepository> <pluginRepository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories>
編碼
編寫啟動類
spring boot提供了一個統一的注解@SpringBootApplication。
@SpringBootApplication = (默認屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan
package com.autumn; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringbootApplication { public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args); } }
添加接口類
必須要寫在App啟動類一個包下才能夠掃描到
@RestController注解相當於@ResponseBody + @Controller合在一起的作用。
package com.autumn; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class firstController {
@GetMapping("hello") public String index(){ return "HelloWorld~"+this.getClass(); } }
測試接口
瀏覽器中輸入http://localhost:8080/hello
打包jar
用package打包,打包后在target文件夾下出現springbootdemo-1.0.0.jar文件
測試jar
使用jsp
pom.xml
<dependencies> <!--WEB支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--jsp頁面使用jstl標簽--> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!--用於編譯jsp--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <!--<scope>provided</scope>--> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.4.2.RELEASE</version> </plugin> </plugins> <resources> <resource> <directory>src/main/webapp</directory> <targetPath>META-INF/resources</targetPath> <includes> <include>**/**</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/**</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
application.properties
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
Controller
修改注解@Controller
package com.autumn; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; //@RestController,要返回jsp這里要用Controller注解 @Controller public class firstController { @GetMapping("hello") @ResponseBody public String index(){ return "HelloWorld~"+this.getClass(); } @RequestMapping("/showjsp") public ModelAndView showjsp(){ ModelAndView mav=new ModelAndView("index"); mav.addObject("name","aeolian"); List list=new ArrayList<>(); list.add("180"); list.add("65"); mav.addObject("list",list); return mav; } }
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>SpringBoot測試</title> </head> <body> ${name} ${list} </body> </html>
測試
參考