SpringBoot快速入門(一)
簡介
相信很多人都接觸spring框架很長時間了,每次搭建spring框架的時候都需要配置好多的jar、xml,做很多繁瑣重複的配置,稍微不留神就會出現各種各樣的問題,每次除錯真的是香菇、藍瘦啊。
spring boot的出現幫助我們徹底解決了這些jar的依賴,只需要很少的配置就可以完成我們的開發工作,我們可以把自己的應用打包成jar,使用java -jar來執行spring web應用,spring boot整合了很多的web容器,後面都會慢慢講到這些,今天我們就開始使用spring boot完成一個最簡單的web應用。
使用maven構建專案
spring官網提供了了一個非常方便的地址來幫助我們建立spring boot專案,http://start.spring.io/
,輸入相關引數點選 Generate Project 即可下載自動生成的壓縮包。
該專案採用maven構建,加壓後直接使用自己的IDE匯入maven工程即可
1,開啟pom檔案就可以看到新的專案比傳統的spring mvc專案的pom檔案介面清晰了很多
1 <parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-parent</artifactId> 4 <version>1.4.1.RELEASE</version> 5 </parent>
第一個地方是多了上面的程式碼,這個spring boot會自動幫我門引入一些約定的配置,檢視原始碼得知
1 <?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"> 2 <modelVersion>4.0.0</modelVersion> 3 <parent> 4 <groupId>org.springframework.boot</groupId> 5 <artifactId>spring-boot-dependencies</artifactId> 6 <version>1.4.1.RELEASE</version> 7 <relativePath>../../spring-boot-dependencies</relativePath> 8 </parent> 9 <artifactId>spring-boot-starter-parent</artifactId> 10 <packaging>pom</packaging> 11 <name>Spring Boot Starter Parent</name> 12 <description>Parent pom providing dependency and plugin management for applications 13 built with Maven</description> 14 <url>http://projects.spring.io/spring-boot/</url> 15 <organization> 16 <name>Pivotal Software, Inc.</name> 17 <url>http://www.spring.io</url> 18 </organization> 19 <properties> 20 <java.version>1.6</java.version> 21 <resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn`t clash with Spring ${} placeholders --> 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 24 <maven.compiler.source>${java.version}</maven.compiler.source> 25 <maven.compiler.target>${java.version}</maven.compiler.target> 26 </properties> 27 <dependencyManagement> 28 <dependencies> 29 <dependency> 30 <groupId>org.springframework</groupId> 31 <artifactId>spring-core</artifactId> 32 <version>${spring.version}</version> 33 <exclusions> 34 <exclusion> 35 <groupId>commons-logging</groupId> 36 <artifactId>commons-logging</artifactId> 37 </exclusion> 38 </exclusions> 39 </dependency> 40 </dependencies> 41 </dependencyManagement> 42 <build> 43 <!-- Turn on filtering by default for application properties --> 44 <resources> 45 <resource> 46 <directory>${basedir}/src/main/resources</directory> 47 <filtering>true</filtering> 48 <includes> 49 <include>**/application*.yml</include> 50 <include>**/application*.properties</include> 51 </includes> 52 </resource> 53 <resource> 54 <directory>${basedir}/src/main/resources</directory> 55 <excludes> 56 <exclude>**/application*.yml</exclude> 57 <exclude>**/application*.properties</exclude> 58 </excludes> 59 </resource> 60 </resources> 61 <pluginManagement> 62 <plugins> 63 <!-- Apply more sensible defaults for user projects --> 64 <plugin> 65 <groupId>org.apache.maven.plugins</groupId> 66 <artifactId>maven-failsafe-plugin</artifactId> 67 <executions> 68 <execution> 69 <goals> 70 <goal>integration-test</goal> 71 <goal>verify</goal> 72 </goals> 73 </execution> 74 </executions> 75 </plugin> 76 <plugin> 77 <groupId>org.apache.maven.plugins</groupId> 78 <artifactId>maven-jar-plugin</artifactId> 79 <configuration> 80 <archive> 81 <manifest> 82 <mainClass>${start-class}</mainClass> 83 <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 84 </manifest> 85 </archive> 86 </configuration> 87 </plugin> 88 <plugin> 89 <groupId>org.apache.maven.plugins</groupId> 90 <artifactId>maven-surefire-plugin</artifactId> 91 <configuration> 92 <includes> 93 <include>**/*Tests.java</include> 94 <include>**/*Test.java</include> 95 </includes> 96 <excludes> 97 <exclude>**/Abstract*.java</exclude> 98 </excludes> 99 </configuration> 100 </plugin> 101 <plugin> 102 <groupId>org.apache.maven.plugins</groupId> 103 <artifactId>maven-war-plugin</artifactId> 104 <configuration> 105 <failOnMissingWebXml>false</failOnMissingWebXml> 106 <archive> 107 <manifest> 108 <mainClass>${start-class}</mainClass> 109 <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 110 </manifest> 111 </archive> 112 </configuration> 113 </plugin> 114 <plugin> 115 <groupId>org.codehaus.mojo</groupId> 116 <artifactId>exec-maven-plugin</artifactId> 117 <configuration> 118 <mainClass>${start-class}</mainClass> 119 </configuration> 120 </plugin> 121 <plugin> 122 <groupId>org.apache.maven.plugins</groupId> 123 <artifactId>maven-resources-plugin</artifactId> 124 <version>2.6</version> 125 <configuration> 126 <delimiters> 127 <delimiter>${resource.delimiter}</delimiter> 128 </delimiters> 129 <useDefaultDelimiters>false</useDefaultDelimiters> 130 </configuration> 131 </plugin> 132 <plugin> 133 <groupId>pl.project13.maven</groupId> 134 <artifactId>git-commit-id-plugin</artifactId> 135 <version>2.1.11</version> 136 <executions> 137 <execution> 138 <goals> 139 <goal>revision</goal> 140 </goals> 141 </execution> 142 </executions> 143 <configuration> 144 <verbose>true</verbose> 145 <dateFormat>yyyy-MM-dd`T`HH:mm:ssZ</dateFormat> 146 <generateGitPropertiesFile>true</generateGitPropertiesFile> 147 <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename> 148 </configuration> 149 </plugin> 150 <!-- Support our own plugin --> 151 <plugin> 152 <groupId>org.springframework.boot</groupId> 153 <artifactId>spring-boot-maven-plugin</artifactId> 154 <executions> 155 <execution> 156 <goals> 157 <goal>repackage</goal> 158 </goals> 159 </execution> 160 </executions> 161 <configuration> 162 <mainClass>${start-class}</mainClass> 163 </configuration> 164 </plugin> 165 <!-- Support shade packaging (if the user does not want to use our plugin) --> 166 <plugin> 167 <groupId>org.apache.maven.plugins</groupId> 168 <artifactId>maven-shade-plugin</artifactId> 169 <dependencies> 170 <dependency> 171 <groupId>org.springframework.boot</groupId> 172 <artifactId>spring-boot-maven-plugin</artifactId> 173 <version>1.4.1.RELEASE</version> 174 </dependency> 175 </dependencies> 176 <configuration> 177 <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope> 178 <createDependencyReducedPom>true</createDependencyReducedPom> 179 <filters> 180 <filter> 181 <artifact>*:*</artifact> 182 <excludes> 183 <exclude>META-INF/*.SF</exclude> 184 <exclude>META-INF/*.DSA</exclude> 185 <exclude>META-INF/*.RSA</exclude> 186 </excludes> 187 </filter> 188 </filters> 189 </configuration> 190 <executions> 191 <execution> 192 <phase>package</phase> 193 <goals> 194 <goal>shade</goal> 195 </goals> 196 <configuration> 197 <transformers> 198 <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 199 <resource>META-INF/spring.handlers</resource> 200 </transformer> 201 <transformer implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer"> 202 <resource>META-INF/spring.factories</resource> 203 </transformer> 204 <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 205 <resource>META-INF/spring.schemas</resource> 206 </transformer> 207 <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> 208 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 209 <mainClass>${start-class}</mainClass> 210 </transformer> 211 </transformers> 212 </configuration> 213 </execution> 214 </executions> 215 </plugin> 216 </plugins> 217 </pluginManagement> 218 </build> 219 </project>
View Code
spring boot預設幫我引入的jdk版本是1.6,如果需要改動,則在自己pom檔案中直接重寫<java.version>1.6</java.version>即可。
還可以看到它已經幫我們引入了spring-core和commons-logging包
繼續往下看可以發現一些屬性檔案他也幫我定義好了規則,不需要我們自己在xml中定義了,已經一些maven外掛的定義這裡就不一一說明 ,具體外掛是做什麼用的,各位可以看下maven的相關知識。
第二個改變的地方是
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter</artifactId> 4 </dependency> 5 6 <dependency> 7 <groupId>org.springframework.boot</groupId> 8 <artifactId>spring-boot-starter-test</artifactId> 9 <scope>test</scope> 10 </dependency> 11 12 <dependency> 13 <groupId>org.springframework.boot</groupId> 14 <artifactId>spring-boot-starter-web</artifactId> 15 </dependency>
spring-boot-starter:核心模組,包括自動配置支援、日誌
spring-boot-starter-test :測試模組,包括JUnit、Hamcrest、Mockito
spring-boot-starter-web :開發web專案依賴
程式碼編寫
說了這麼多的配置,來讓我們建立第一個class吧
@Controller @EnableAutoConfiguration @RequestMapping("/ctr") public class SampleController { @RequestMapping("/getStr") @ResponseBody String home(){ return "Hello World"; } @RequestMapping("/info") @ResponseBody public Map<String,String> getInfo(){ Map<String, String> map = new HashMap<>(); map.put("name", "jack"); return map; } public static void main(String[] args) { SpringApplication.run(SampleController.class,args); } }
到此為止,我們的第一個spring 的web專案就結束了,直接執行main方法,瀏覽器中輸入:http://127.0.0.1:8080/ctr/info 可以看到執行結果 {“name”: “jack”}
怎麼樣,是不是很神奇,沒有啟動任何的web容器,只需要執行main方法就可以執行我們的web專案了,而且配置就這麼簡單任性。
開開心心編碼,快快樂樂生活。
相關文章
- SpringBoot整合RabbitMQ(一)快速入門Spring BootMQ
- SpringBoot詳解(一)-快速入門Spring Boot
- Springboot快速入門Spring Boot
- 【SpringBoot】快速入門Spring Boot
- Springboot mini - Solon詳解(一)- 快速入門Spring Boot
- 【SpringBoot學習一】開發入門--快速建立springboot程式Spring Boot
- SpringBoot 基礎知識學習(一)——快速入門Spring Boot
- SpringBoot2.x入門:快速建立一個SpringBoot應用Spring Boot
- JS快速入門(一)JS
- SpringBoot基礎24_SpringBoot快速入門2Spring Boot
- springboot(一):入門篇Spring Boot
- Springboot快速入門篇,圖文並茂Spring Boot
- 如何快速入門一門語言
- RabbitMQ(一):RabbitMQ快速入門MQ
- Solon詳解(一)- 快速入門
- 一文快速入門DockerDocker
- Spring Boot (一)快速入門Spring Boot
- node.js快速入門(一)Node.js
- TinyXML快速入門(一)(二)(三)XML
- 快速排序快速入門排序
- webpack 快速入門 系列 —— 實戰一Web
- Objective C 快速入門學習一Object
- 自學前端如何快速入門?怎麼快速入門前端?前端
- 淺談之SpringBoot的環境搭建及快速入門Spring Boot
- SpringBoot入門Spring Boot
- SQL快速入門 ( MySQL快速入門, MySQL參考, MySQL快速回顧 )MySql
- MySQL 快速入門MySql
- mysqlsla快速入門MySql
- Pipenv 快速入門
- Envoy 快速入門
- mongodb快速入門MongoDB
- Spark 快速入門Spark
- zookeeper 快速入門
- MQTT 快速入門MQQT
- Lumen快速入門
- Webpack快速入門Web
- RabbitMQ快速入門MQ
- QT快速入門QT