Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。咱們都知道Spring 的組件代碼是輕量級的,但它的配置倒是重量級的。html
從Spring配置的三個階段看:java
第一階段:xml配置react
在Spring 1.x時代,使用Spring開發滿眼都是xml配置的Bean,隨着項目的擴大,咱們須要把xml配置文件放到不一樣的配置文件裏,那時須要頻繁的在開發的類web
和配置文件之間進行切換面試
第二階段:註解配置redis
在Spring 2.x 時代,隨着JDK1.5帶來的註解支持,Spring提供了聲明Bean的註解(例如@Component、@Service),大大減小了配置量。spring
主要使用的方式是應用的基本配置(如數據庫配置)用xml,業務配置用註解數據庫
第三階段:java配置安全
Spring 3.0 引入了基於 Java 的配置能力,這是一種類型安全的可重構配置方式,能夠代替 XML。咱們目前恰好處於這個時代,Spring4.x和Spring Boot都推薦springboot
使用Java配置。
熟悉@Configuration、@Bean這兩個bean的同窗或許已經知道了。這兩個註解一塊兒使用就能夠建立一個基於java代碼的配置類,能夠用來替代相應的xml配置文件。
@Configuration註解的類能夠看做是能生產讓Spring IoC容器管理的Bean實例的工廠。
@Bean註解告訴Spring,一個帶有@Bean的註解方法將返回一個對象,該對象應該被註冊到spring容器中。
Spring Boot解決了什麼問題?
1.如何精簡配置;如何讓編碼、部署、監控變簡單;
2.如何方便的讓spring生態圈和其餘工具鏈整合;
3.解決了依賴衝突的問題。
Spring Boot默認配置了不少框架的使用方式,就像 Maven 整合了全部的 Jar 包,Spring Boot 整合了全部的框架。它簡化了基於Spring的應用開發,只須要「run」就能
建立一個獨立的、生產級別的Spring應用。Spring Boot爲Spring平臺及第三方庫提供開箱即用的設置(提供默認設置),這樣咱們就能夠簡單的開始。多數Spring Boot應用
只須要不多的Spring配置。咱們可使用SpringBoot建立java應用,並使用java –jar 啓動它,或者採用傳統的war部署方式。
Spring Boot的特色:
一、建立獨立的Spring應用程序
二、嵌入的Tomcat,無需部署WAR文件
三、簡化Maven配置
四、自動配置Spring
五、提供生產就緒型功能,如指標,健康檢查和外部配置
六、絕對沒有代碼生成而且對XML也沒有配置要求
快速構建Spring Boot項目:
環境準備:
JDK:1.8
數據庫:MySQL
IDE:MyEclipse 2017/IntelliJ IDEA2018.3.3
Spring-Boot:2.1.5
Maven: 3.3.3 (官方聲明1.4.4版本須要Maven 3.2+)
本地倉庫:須要使用資料中的倉庫
Maven項目構建:
方式一:
一、訪問 http://start.spring.io/
二、選擇構建工具 Maven Project、Java、Spring Boot 版本 2.1.3 以及一些工程基本信息
三、點擊 Generate Project 下載項目壓縮包
四、使用的是 MyEclipse,Import -> Existing Maven Projects -> Next -> 選擇解壓後的文件夾 -> Finsh。
方式二:
Idea 構建項目
一、選擇 File -> New —> Project... 彈出新建項目的框
二、選擇 Spring Initializr,Next 也會出現上述相似的配置界面,Idea 幫咱們作了集成
三、填寫相關內容後,點擊 Next 選擇依賴的包再點擊 Next,最後肯定信息無誤點擊 Finish。
l src/main/java 程序開發以及主程序入口
l src/main/resources 配置文件
l src/test/java 測試程序
另外,spingboot建議的目錄結果以下:
root package結構:com.example.myproject
com +- example +- myproject +- Application.java | +- entity | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- controller | +- CustomerController.java |
一、Application.java 建議放到跟目錄下面,主要用於作一些框架配置
二、entity目錄主要用於實體(Entity)與數據訪問層(Repository)
三、service 層主要是業務類代碼
四、controller 負責頁面訪問控制
Spring Boot啓動機制(starter)
http://www.javashuo.com/article/p-oxrxgzuw-ea.html
Spring Boot自動配置管理(@enableAutoConfiguration)
http://www.javashuo.com/article/p-zypiikve-be.html
其實在不少時候咱們的配置是在不少jar包裏的,那麼咱們新的應用該怎麼讀入這些jar包裏的配置文件呢,SpringBoot是這樣管理的。
最主要的註解就是@enableAutoConfiguration,而這個註解會導入一個EnableAutoConfigurationImportSelector的類,
而這個類會去讀取一個spring.factories下key爲EnableAutoConfiguration全限定名對應值.
# Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\ org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\ org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\ org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration,\ org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\ org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\ org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\ org.springframework.boot.autoconfigure.cloud.CloudAutoConfiguration,\ org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\ org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\ org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration,\ org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration,\ org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.solr.SolrRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,\ org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration,\ org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration,\ org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration,\ org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,\ org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\ org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration,\ org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration,\ org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration,\ org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration,\ org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration,\ org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration,\ org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration,\ org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.hornetq.HornetQAutoConfiguration,\ org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\ org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,\ org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration,\ org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,\ org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\ org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration,\ org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration,\ org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration,\ org.springframework.boot.autoconfigure.mobile.DeviceDelegatingViewResolverAutoConfiguration,\ org.springframework.boot.autoconfigure.mobile.SitePreferenceAutoConfiguration,\ org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration,\ org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\ org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration,\ org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,\ org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration,\ org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration,\ org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration,\ org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration,\ org.springframework.boot.autoconfigure.security.oauth2.OAuth2AutoConfiguration,\ org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration,\ org.springframework.boot.autoconfigure.session.SessionAutoConfiguration,\ org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration,\ org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration,\ org.springframework.boot.autoconfigure.social.LinkedInAutoConfiguration,\ org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration,\ org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration,\ org.springframework.boot.autoconfigure.velocity.VelocityAutoConfiguration,\ org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration,\ org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration,\ org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,\ org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration,\ org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration,\ org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration,\ org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfiguration,\ org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration,\ org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration,\ org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration,\ org.springframework.boot.autoconfigure.web.WebClientAutoConfiguration,\ org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\ org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration,\ org.springframework.boot.autoconfigure.websocket.WebSocketMessagingAutoConfiguration,\ org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration
https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-starter
在此文檔中可查找到與各類技術整合的POM依賴
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
在此文檔中可查找到application.properties/application.yml全部可配置參數
熱部署:在pom.xml中添加依賴
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build>