摘要:第二個(gè)類級(jí)別注解是。將引導(dǎo)應(yīng)用程序,啟動(dòng),從而啟動(dòng)自動(dòng)配置服務(wù)器。比如想使用不同版本的,具體如下在標(biāo)簽中還可以指定編譯的版本和項(xiàng)目的編碼格式指定項(xiàng)目編碼為使用插件可以為項(xiàng)目提供的操作方式,的個(gè),默認(rèn)。
引言
Spring 框架對(duì)于很多 Java 開發(fā)人員來說都不陌生。Spring 框架包含幾十個(gè)不同的子項(xiàng)目,涵蓋應(yīng)用開發(fā)的不同方面。如此多的子項(xiàng)目和組件,一方面方便了開發(fā)人員的使用,另外一個(gè)方面也帶來了使用方面的問題。每個(gè)子項(xiàng)目都有一定的學(xué)習(xí)曲線。開發(fā)人員需要了解這些子項(xiàng)目和組件的具體細(xì)節(jié),才能知道如何把這些子項(xiàng)目整合起來形成一個(gè)完整的解決方案。在如何使用這些組件上,并沒有相關(guān)的最佳實(shí)踐提供指導(dǎo)。對(duì)于新接觸 Spring 框架的開發(fā)人員來說,并不知道如何更好的使用這些組件。Spring 框架的另外一個(gè)常見問題是要快速創(chuàng)建一個(gè)可以運(yùn)行的應(yīng)用比較麻煩。Spring Boot 是 Spring 框架的一個(gè)新的子項(xiàng)目,用于創(chuàng)建 Spring 4.0 項(xiàng)目。它可以自動(dòng)配置 Spring 的各種組件,并不依賴代碼生成和 XML 配置文件。Spring Boot 也提供了對(duì)于常見場(chǎng)景的推薦組件配置。Spring Boot 可以大大提升使用 Spring 框架時(shí)的開發(fā)效率,對(duì)于快速開發(fā)一個(gè)可運(yùn)行的非大型的項(xiàng)目非常合適。
簡(jiǎn)介從 Spring Boot 項(xiàng)目名稱中的 Boot 可以看出來,Spring Boot 的作用在于創(chuàng)建和啟動(dòng)新的基于 Spring 框架的項(xiàng)目。它的目的是幫助開發(fā)人員很容易的創(chuàng)建出獨(dú)立運(yùn)行和產(chǎn)品級(jí)別的基于 Spring 框架的應(yīng)用。Spring Boot 會(huì)選擇最適合的 Spring 子項(xiàng)目和第三方開源庫(kù)進(jìn)行整合。大部分 Spring Boot 應(yīng)用只需要非常少的配置就可以快速運(yùn)行起來。
Spring Boot 包含的特性如下:
* 創(chuàng)建可以獨(dú)立運(yùn)行的 Spring 應(yīng)用。 * 直接嵌入 Tomcat 或 Jetty 服務(wù)器,不需要部署 WAR 文件。 * 盡可能的根據(jù)項(xiàng)目依賴來自動(dòng)配置 Spring 框架。 * 不需要傳統(tǒng)的Sring項(xiàng)目繁多的 XML 配置文件。
通過 Spring Boot,創(chuàng)建新的 Spring 應(yīng)用變得非常容易,而且創(chuàng)建出的 Spring 應(yīng)用符合通用的最佳實(shí)踐。
官方文檔上有這樣一段介紹:
代碼示例Learn what you can do with Spring Boot ?
Spring Boot offers a fast way to build applications. It looks at your classpath and at beans you have configured, makes reasonable assumptions about what you’re missing, and adds it. With Spring Boot you can focus more on business features and less on infrastructure.
For example:Got Spring MVC? There are several specific beans you almost always need, and Spring Boot adds them automatically. A Spring MVC app also needs a servlet container, so Spring Boot automatically configures embedded Tomcat.
Got Jetty? If so, you probably do NOT want Tomcat, but instead embedded Jetty. Spring Boot handles that for you.
Got Thymeleaf? There are a few beans that must always be added to your application context; Spring Boot adds them for you.
These are just a few examples of the automatic configuration Spring Boot provides. At the same time, Spring Boot doesn’t get in your way. For example, if Thymeleaf is on your path, Spring Boot adds a SpringTemplateEngine to your application context automatically. But if you define your own SpringTemplateEngine with your own settings, then Spring Boot won’t add one. This leaves you in control with little effort on your part.
Spring Boot doesn"t generate code or make edits to your files. Instead, when you start up your application, Spring Boot dynamically wires up beans and settings and applies them to your application context.Spring Boot doesn"t generate code or make edits to your files. Instead, when you start up your application, Spring Boot dynamically wires up beans and settings and applies them to your application context.
1.在IDEA中創(chuàng)建一個(gè)項(xiàng)目,和一個(gè)helloworld模塊:
目錄結(jié)構(gòu)如圖:
在pom.xml文件中引入Spring-boot的依賴:
org.springframework.boot spring-boot-starter-parent 1.5.7.RELEASE 4.0.0 jar org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin com.lzumetal.springboot.helloworld.Application
再創(chuàng)建兩個(gè)類:
第一個(gè)是Application.java,用來啟動(dòng)SpringBoot應(yīng)用:
package com.lzumtal.springboot.helloworld; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Aplication.class, args); } }
第二個(gè)類HelloController.java用來響應(yīng)web請(qǐng)求:
package com.lzumetal.springboot.helloworld.controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping("/home") String home() { return "Hello World!"; } @RequestMapping("/hello/{name}") String hello(@PathVariable("name") String name) { return "hello " + name + "!!!"; } }
2.運(yùn)行
運(yùn)行Aplication中的main()方法,控制臺(tái)打印啟動(dòng)信息:
在瀏覽中訪問:http://localhost:8080/home
訪問:http://localhost:8080/hello/spring-boot
這樣示例就成功運(yùn)行了。
補(bǔ)充說明1.@SpringbootApplication注解:
Spring Boot默認(rèn)是掃描@SpringBootApplication注解的類(即啟動(dòng)類)的同包以及子包下的類。
使用@SpringbootApplication注解 可以解決根類或者配置類頭上注解過多的問題,一個(gè)@SpringbootApplication相當(dāng)于@Configuration,@EnableAutoConfiguration和@ComponentScan 并具有他們的默認(rèn)屬性值
@SpringBootApplication is a convenience annotation that adds all of the following:
@Configuration tags the class as a source of bean definitions for the application context.
@EnableAutoConfiguration tells Spring Boot to start adding beans based on classpath settings, other beans, and various property settings.
Normally you would add @EnableWebMvc for a Spring MVC app, but Spring Boot adds it automatically when it sees spring-webmvc on the classpath. This flags the application as a web application and activates key behaviors such as setting up a DispatcherServlet.
@ComponentScan tells Spring to look for other components, configurations, and services in the hello package, allowing it to find the controllers.
2.@EnableAutoConfiguration注解(開啟自動(dòng)配置):@EnableAutoConfiguration注解的作用在于讓 Spring Boot 根據(jù)應(yīng)用所聲明的依賴來對(duì) Spring 框架進(jìn)行自動(dòng)配置,這就減少了開發(fā)人員的工作量。
The second class-level annotation is @EnableAutoConfiguration. This annotation tells Spring Boot to “guess” how you will want to configure Spring, based on the jar dependencies that you have added. Since spring-boot-starter-web added Tomcat and Spring MVC, the auto-configuration will assume that you are developing a web application and setup Spring accordingly.
Starters and Auto-Configuration
Auto-configuration is designed to work well with “Starters”, but the two concepts are not directly tied. You are free to pick-and-choose jar dependencies outside of the starters and Spring Boot will still do its best to auto-configure your application.
第二個(gè)類級(jí)別注解是@EnableAutoConfiguration。這個(gè)注解告訴Spring Boot“猜測(cè)”將如何配置Spring,它是基于添加的jar依賴。 由于spring-boot-starter-web添加了Tomcat和Spring MVC,因此自動(dòng)配置將假設(shè)正在開發(fā)一個(gè)Web應(yīng)用程序并相應(yīng)地設(shè)置Spring。
啟動(dòng)器和自動(dòng)配置(Starters & Auto-Configuration):
自動(dòng)配置旨在與“Starters”配合使用,但這兩個(gè)概念不直接綁定。可以自由選擇和選擇起始者以外的jar依賴,Spring Boot仍將盡力自動(dòng)配置應(yīng)用程序。
3.main()方法
The main() method uses Spring Boot’s SpringApplication.run() method to launch an application. Did you notice that there wasn’t a single line of XML? No web.xml file either. This web application is 100% pure Java and you didn’t have to deal with configuring any plumbing or infrastructure.
“main”方法應(yīng)用程序的最后一部分是主(main)方法。 這只是一個(gè)遵循Java約定的應(yīng)用程序入口點(diǎn)的標(biāo)準(zhǔn)方法。main方法通過調(diào)用run來委托Spring Boot SpringApplication類。SpringApplication將引導(dǎo)應(yīng)用程序,啟動(dòng)Spring,從而啟動(dòng)自動(dòng)配置Tomcat Web服務(wù)器。需要傳遞Example.class作為run方法的參數(shù)來告訴SpringApplication,這是主要的Spring組件。args數(shù)組也被傳遞以暴露任何命令行參數(shù)。
4.繼承 spring-boot-starter-parent
作用是Spring-Boot為我們自動(dòng)添加相關(guān)的依賴,如果不想使用Spring Boot中的默認(rèn)版本,可以在pom.xml文件的properites標(biāo)簽中指定我們自己想要引入的版本,這樣就可以覆蓋默認(rèn)的版本。
比如想使用不同版本的Spring Data,具體如下:
Fowler-SR2
在properties標(biāo)簽中還可以指定JDK編譯的版本和項(xiàng)目的編碼格式:
UTF-8 UTF-8 1.8
5.spring-boot-maven-plugin 插件
可以為SpringBoog項(xiàng)目提供Maven的操作方式,Spring Boot Maven plugin的5個(gè)Goals
* spring-boot:repackage,默認(rèn)goal。在mvn package之后,再次打包可執(zhí)行的jar/war,同時(shí)保留mvn package生成的jar/war為.origin * spring-boot:run,運(yùn)行Spring Boot應(yīng)用 * spring-boot:start,在mvn integration-test階段,進(jìn)行Spring Boot應(yīng)用生命周期的管理 * spring-boot:stop,在mvn integration-test階段,進(jìn)行Spring Boot應(yīng)用生命周期的管理 * spring-boot:build-info,生成Actuator使用的構(gòu)建信息文件build-info.properties
這里介紹一下 spring-boot:repackage 和 spring-boot:run 這兩個(gè)。
spring-boot:repackage :可以將項(xiàng)目打包成fat jar(executable jar)后,命令是:
mvm package spring-boot:repackage,或者直接使用 mvm package,(如果使用 mvn spring-boot:repackage 則會(huì)報(bào)錯(cuò))。之后我們就可以直接 通過 java -jar 的命令來啟動(dòng)這個(gè) SpringBoot 項(xiàng)目(試了一下即使沒有配置 mainClass 也是成功的)
mvn spring-boot:run:在 pom.xml 文件所在的目錄下運(yùn)行該命令即可啟動(dòng) SpringBoot 項(xiàng)目,和在 Application.java 中運(yùn)行main()方法的結(jié)果是一樣的
The Spring Boot Maven plugin provides many convenient features:
It collects all the jars on the classpath and builds a single, runnable "über-jar", which makes it more convenient to execute and transport your service.
It searches for the public static void main() method to flag as a runnable class.
It provides a built-in dependency resolver that sets the version number to match Spring Boot dependencies. You can override any version you wish, but it will default to Boot’s chosen set of versions.
本文示例代碼已上傳到github: https://github.com/liaosilzu2...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/76381.html
摘要:一概括,如果使用開發(fā)一個(gè)的應(yīng)用創(chuàng)建一個(gè)項(xiàng)目并且導(dǎo)入相關(guān)包。創(chuàng)建一個(gè)編寫一個(gè)控制類需要一個(gè)部署應(yīng)用的服務(wù)器如,特點(diǎn)設(shè)計(jì)目的是用來簡(jiǎn)化新應(yīng)用的初始搭建以及開發(fā)過程。啟動(dòng)器可以和位于同一個(gè)包下,或者位于的上一級(jí)包中,但是不能放到的平級(jí)以及子包下。 一,Spring Boot 介紹 Spring Boot不是一個(gè)新的框架,默認(rèn)配置了多種框架使用方式,使用SpringBoot很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)...
摘要:簡(jiǎn)介本系列基于的官方文檔,除去了文檔中一些冗余的東西,加上了一些自己的理解,意圖是在于幫助更多初識(shí)的人來進(jìn)行一次探險(xiǎn)。本系列建議具有基礎(chǔ)和使用經(jīng)驗(yàn)的同學(xué)學(xué)習(xí)。至此,一個(gè)程序就編寫完畢了。 簡(jiǎn)介 本系列基于Spring Boot 2.x 的官方文檔,除去了文檔中一些冗余的東西,加上了一些自己的理解,意圖是在于幫助更多初識(shí)Spring Boot的人來進(jìn)行一次探險(xiǎn)。 本系列建議具有Java基...
摘要:使用嵌入式容器,應(yīng)用無需達(dá)成包。自動(dòng)依賴與版本控制。準(zhǔn)生產(chǎn)環(huán)境的運(yùn)行時(shí)應(yīng)用監(jiān)控。告訴開啟自動(dòng)配置功能,這樣自動(dòng)配置才能生效。其組成為為的底層注解,表明給容器中導(dǎo)入一個(gè)組件,導(dǎo)入的組建由類提供。 Spring Boot——入門 spring boot簡(jiǎn)化了spring的開發(fā),是J2EE一站式解決方案。 Spring Boot 的優(yōu)缺點(diǎn) 優(yōu)點(diǎn) 快速創(chuàng)建獨(dú)立運(yùn)行的服務(wù),與主流框架集成。 使...
摘要:關(guān)于的自動(dòng)配置,這個(gè)是重點(diǎn)之一,后面細(xì)說。在后續(xù)的學(xué)習(xí)中會(huì)慢慢學(xué)習(xí)到。紅色標(biāo)記的就是已經(jīng)掃描到了并初始化成功了。 以下內(nèi)容,如有問題,煩請(qǐng)指出,謝謝 springboot出來也很久了,以前零散地學(xué)習(xí)了不少,不過很長(zhǎng)時(shí)間了都沒有在實(shí)際中使用過了,忘了不少,因此要最近準(zhǔn)備抽時(shí)間系統(tǒng)的學(xué)習(xí)積累下springboot,給自己留個(gè)根。 因?yàn)橐郧皩W(xué)過一些,這里就主要根據(jù)官方文檔來學(xué)習(xí)了,可能會(huì)根據(jù)...
摘要:前言以前總是利用創(chuàng)建工程來使用只知其然不知其所以然今天從搭建一個(gè)基于的的項(xiàng)目創(chuàng)建工程與安裝依賴?yán)没虻葎?chuàng)建一個(gè)工程一路即可此時(shí)的目錄結(jié)構(gòu)如下修改安裝首先在中加入繼承的主程序和一些依賴然后的加入程序依賴使成為項(xiàng)目框架主程序 前言 以前總是利用start.spring.io創(chuàng)建spring-boot工程來使用 ,只知其然不知其所以然 今天從0搭建一個(gè)基于mvnen的spring-boot...
閱讀 1508·2021-10-11 10:59
閱讀 1881·2021-09-09 11:36
閱讀 1393·2019-08-30 15:55
閱讀 1329·2019-08-29 11:20
閱讀 3064·2019-08-26 13:39
閱讀 1468·2019-08-26 13:37
閱讀 1960·2019-08-26 12:11
閱讀 1324·2019-08-23 14:28