Spring Boot基本介紹

Spring Boot簡介:

  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。

Spring Boot的基礎目錄結構:

  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

Spring Boot之Spring Boot application starters

  https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-starter

  在此文檔中可查找到與各類技術整合的POM依賴

Spring Boot之Common application properties/yml

  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>

 

 

springboot面試題

https://www.cnblogs.com/3xmq/p/springboot.html

http://www.javashuo.com/article/p-zpptmyjt-ch.html

相關文章
相關標籤/搜索