spring boot基础教程:入门程序Hello World的编写
前言
隨著各種開(kāi)源的第三方的組件爆發(fā)式增長(zhǎng),java的開(kāi)發(fā)顯得越來(lái)越笨重:繁多的配置,低下的開(kāi)發(fā)效率,復(fù)雜的部署流程以及第三方技術(shù)集成難度大。
在上述環(huán)境下,Spring Boot應(yīng)運(yùn)而生。它使用"習(xí)慣優(yōu)于配置"(項(xiàng)目中存在大量的配置,此外還內(nèi)置一個(gè)習(xí)慣性的配置,讓你無(wú)需手動(dòng)進(jìn)行配置) 的理念讓你的項(xiàng)目快速運(yùn)行起來(lái)。使用Spring boot很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)行(運(yùn)行jar,內(nèi)置servlet容器)、準(zhǔn)生產(chǎn)級(jí)別的基于Spring框架的項(xiàng)目,使用spring boot你可以不用或者很少的spring配置。
spring boot的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
快速構(gòu)建項(xiàng)目
對(duì)主流開(kāi)發(fā)框架的無(wú)配置集成
項(xiàng)目可獨(dú)立運(yùn)行,無(wú)須依賴外部servlet容器
提供運(yùn)行時(shí)的應(yīng)用監(jiān)控
極大的提高了開(kāi)發(fā)部署效率
與云計(jì)算的天然集成
缺點(diǎn):
書(shū)籍文檔較少且不夠深入
由于大部分配置在類(lèi)里面完成的,所以損失了一定的可維護(hù)的便利性
所以spring boot特別適合中小型項(xiàng)目。
Hello World程序開(kāi)發(fā)
1. 設(shè)置spring boot的parent
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version> </parent>說(shuō)明:Spring boot的項(xiàng)目必須要將parent設(shè)置為spring boot的parent,該parent包含了大量默認(rèn)的配置,大大簡(jiǎn)化了我們的開(kāi)發(fā)。
而且引入以后在申明其它dependency的時(shí)候就不需要version了,后面可以看到。
2. 導(dǎo)入spring boot的web支持
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>3. 添加spring boot的maven插件
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId> </plugin>當(dāng)然,如果你不想用maven命令運(yùn)行,也可以不用配置該插件
pom文件完整版
<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.wx</groupId><artifactId>springboot01</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><!-- java編譯插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><!-- 如果你不想用maven命令運(yùn)行spring boot可以不用作此配置 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>4. 編寫(xiě)Hello World程序
package com.wx.controlers;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;@Controller @SpringBootApplication //@Configuration //因?yàn)?#64;SpringBootApplication包含了Configuration,所以這里可以省略 public class HelloApp {@RequestMapping("hello")@ResponseBodypublic String hello(){return "Hello";}public static void main(String[] args) {SpringApplication.run(HelloApp.class, args);}}代碼說(shuō)明:
(1)@SpringBootApplication:Spring Boot項(xiàng)目的核心注解,主要目的是開(kāi)啟自動(dòng)配置。
(2)@Configuration:這是一個(gè)配置Spring的配置類(lèi)。
(3)@Controller:標(biāo)明這是一個(gè)SpringMVC的Controller控制器。
(4)@ResponseBody: 如果需要返回JSON,XML或自定義mediaType內(nèi)容到頁(yè)面,則需要在對(duì)應(yīng)的方法上加上@ResponseBody注解
(5)main方法:在main方法中啟動(dòng)一個(gè)應(yīng)用,即:這個(gè)應(yīng)用的入口。
當(dāng)然,我們也可以用restfull風(fēng)格的注解(@restcontroller)來(lái)標(biāo)注,如下代碼:
官方文檔:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思是:
@RestController注解相當(dāng)于@ResponseBody + @Controller合在一起的作用。
如果只是使用@RestController注解Controller,則Controller中的方法無(wú)法返回jsp頁(yè)面,配置的視圖解析器InternalResourceViewResolver不起作用,返回的內(nèi)容就是Return 里的內(nèi)容。
5. 啟動(dòng)應(yīng)用
在Spring Boot項(xiàng)目中,啟動(dòng)的方式有兩種,一種是直接run Java Application另外一種是通過(guò)Spring Boot的Maven插件運(yùn)行。
第一種:
第二種:
在項(xiàng)目上單擊右鍵===》Run as===> Maven build…
看到如下信息,說(shuō)明啟動(dòng)成功了
[ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
[ main] com.wx.controlers.HelloApp : Started HelloApp in 3.126 seconds (JVM running for 42.425)
啟動(dòng)瀏覽器運(yùn)行
6 spring boot的核心
(1) 入口類(lèi)和@SpringBootApplication
Spring Boot的項(xiàng)目一般都會(huì)有*Application的入口類(lèi),入口類(lèi)中會(huì)有main方法,
這是一個(gè)標(biāo)準(zhǔn)的Java應(yīng)用程序的入口方法。
@SpringBootApplication注解是Spring Boot的核心注解,它其實(shí)是一個(gè)組合注解:
該注解主要組合了以下注解:
1.@SpringBootConfiguration:這是Spring Boot項(xiàng)目的配置注解,這也是一個(gè)組合注解:
在Spring Boot項(xiàng)目中推薦使用@ SpringBootConfiguration替代@Configuration,所以HelloApp入口類(lèi)上的Configuration注解可以注釋掉
2.@EnableAutoConfiguration:啟用自動(dòng)配置,該注解會(huì)使Spring Boot根據(jù)項(xiàng)目中依賴的jar包自動(dòng)配置項(xiàng)目的配置項(xiàng):
a)如:我們添加了spring-boot-starter-web的依賴,項(xiàng)目中也就會(huì)引入SpringMVC的依賴,Spring Boot就會(huì)自動(dòng)配置tomcat和SpringMVC
3.@ComponentScan:默認(rèn)掃描@SpringBootApplication所在類(lèi)的同級(jí)目錄以及它的子目錄。
如果我們?cè)趩?dòng)類(lèi)上又配置了@ComponentScan, 那么該默認(rèn)的掃描失效,當(dāng)前包也要重新納入掃描!
(2) 關(guān)閉自動(dòng)配置
通過(guò)上述,我們得知,Spring Boot會(huì)根據(jù)項(xiàng)目中的jar包依賴,自動(dòng)做出配置,Spring Boot支持的自動(dòng)配置如下(非常多):
如果我們不需要Spring Boot自動(dòng)配置,想關(guān)閉某一項(xiàng)的自動(dòng)配置,該如何設(shè)置呢?
比如:我們不想自動(dòng)配置Redis,想手動(dòng)配置。
當(dāng)然了,其他的配置就類(lèi)似了。
7 解決jsp頁(yè)面的支持問(wèn)題
由于Spring boot使用的內(nèi)嵌的tomcat,而內(nèi)嵌的tamcat是不支持jsp頁(yè)面的,所有需要導(dǎo)入額外的包才能解決。
org.apache.tomcat.embed tomcat-embed-jasper provided 修改啟動(dòng)類(lèi)package com.wx.controlers;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@Controller
@SpringBootApplication
//@Configuration //因?yàn)?#64;SpringBootApplication包含了Configuration,所以這里可以省略
public class HelloApp {
}
寫(xiě)一個(gè)Hello.jsp的頁(yè)面放到webapp目錄下:
編寫(xiě)全局配置文件application.properties,如圖所示
關(guān)于全局配置文件,以后再講解!
重新運(yùn)行,結(jié)果如圖
總結(jié)
以上是生活随笔為你收集整理的spring boot基础教程:入门程序Hello World的编写的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 轻松理解之SpringBoot实现原理
- 下一篇: spring boot基础教程之文件上传