(一)Spring Boot入門

1. 簡介

Spring Boot來簡化Spring應用開發,約定大於配置,去繁從簡,just run就能建立一個獨立的,產品級別的應用css

 

背景:html

  J2EE笨重的開發、繁多的配置、低下的開發效率、複雜的部署流程、第三方技術集成難度大.java

 

解決:web

  "Spring全家桶"時代spring

  Spring Boot -> J2EE一站式解決方案瀏覽器

  Spring Cloud -> 分佈式總體解決方案服務器

 

優勢:架構

  1.快速建立獨立運行的Spring項目以及主流框架集成app

  2.使用嵌入式的Servlet容器,應用無需打成WAR包框架

  3.starters自動依賴與版本控制

  4.大量的自動配置,簡化開發,也可修改默認值

  5.無需配置XML,伍代碼生成,開箱即用

  6.準生產環境的運行時應用監控

  7.與雲計算的自然集成

 

2.微服務

2014,martin fowler

微服務:架構風格

一個應用應該就是一組小型服務;能夠經過HTTP的方式進行互通;

每個功能元素最終都是一個可獨立替換和獨立升級的軟件單元;

詳細參照微服務文檔:https://martinfowler.com/articles/microservices.html

 

 

3.環境準備

環境約束:

 jdk1.8;

maven3.x:maven 3.3以上版本;

IntelliJIDEA2017;

SpringBoot 1.5.9.RELEASE;

 

1.給maven設置

給maven 的settings.xml配置文件的profiles標籤添加

<profile>
  <id>jdk-1.8</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>1.8</jdk>
  </activation>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  </properties>
</profile>

 

2.IDEA設置

 

 

 

四、Spring Boot HelloWorld

一個功能:

瀏覽器發送hello請求,服務器接受請求並處理,響應Hello World字符串;

1.建立一個maven工程

2.導入spring boot相關的依賴

 

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

 

3.編寫一個主程序;啓動Spring Boot應用

/**
 * @SpringBootApplication 來標註一個主程序類,說明這是一個Spring Boot應用
 */
@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args) {

        // Spring應用啓動起來
        SpringApplication.run(HelloWorldMainApplication.class);

    }

}

4.編寫相關的Controller、Service

@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "Hello World";
    }

}

5.運行主程序測試

6.簡化部署

<!-- 這個插件,能夠將應用打包成一個可執行的jar包 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

將這個應用打成jar包,直接使用java -jar的命令進行執行;

5. Hello World探究

1.POM文件

父項目
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
</parent>

他的父項目是
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
他來真正管理Spring Boot應用裏面的全部依賴版本;

Spring Boot的版本仲裁中心;

之後咱們導入依賴默認是不須要寫版本;(沒有在dependencies裏面管理的依賴天然須要聲明版本號)

2.導入的依賴

1 <dependency>
2     <groupId>org.springframework.boot</groupId>
3     <artifactId>spring-boot-starter-web</artifactId>
4 </dependency>
spring-boot-starter-web:
  spring-boot-starter:spring-boot場景啓動器;幫咱們導入了web模塊正常運行所依賴的組件

Spring Boot將全部的功能場景都抽取出來,作成一個個的starters(啓動器),只須要在項目裏面引入這些starter相關場景的全部依賴都會導入進來,要用什麼功能就導入什麼場景的啓動器

 

 3.主程序類,主入口類

/**
 * @SpringBootApplication 來標註一個主程序類,說明這是一個Spring Boot應用
 */
@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args) {

        // Spring應用啓動起來
        SpringApplication.run(HelloWorldMainApplication.class);

    }

}
@SpringBootApplication:  Spring Boot應用標註在某個類上說明這個類是Spring Boot的主配置類,SpringBoot就應該運行這個類的main方法來啓動SpringBoot應用;
 1 @Target({ElementType.TYPE})
 2 @Retention(RetentionPolicy.RUNTIME)
 3 @Documented
 4 @Inherited
 5 @SpringBootConfiguration
 6 @EnableAutoConfiguration
 7 @ComponentScan(
 8     excludeFilters = {@Filter(
 9     type = FilterType.CUSTOM,
10     classes = {TypeExcludeFilter.class}
11 ), @Filter(
12     type = FilterType.CUSTOM,
13     classes = {AutoConfigurationExcludeFilter.class}
14 )}
15 )
16 public @interface SpringBootApplication {
@SpringBootConfiguration:Spring Boot的配置類;
  標註在某個類上,表示這是一個Spring Boot的配置類:
  @Configuration:配置類上來標註這個註解;

    配置類 --- 配置文件;配置類也是容器中的一個組件

@EnableAutoConfiguration: 開啓自動配置功能;
  之前咱們須要配置的東西,Spring Boot幫我自動配置;@EnableAutoConfiguration告訴SpringBoot開啓自動配置功能;這樣自動配置才能生效;
1 @AutoConfigurationPackage
2 @Import({EnableAutoConfigurationImportSelector.class})
3 public @interface EnableAutoConfiguration {

@AutoConfigurationPackage: 自動配置包

@Import({Registrar.class}):

Spring的底層註解@Import,給容器中導入一個組件;導入的組件由Registrar.class
將主配置類(@SpringBootApplication標註的類)的所在包及下面全部子包及下面全部子包裏面的全部組件掃描到Spring容器;

@Import({EnableAutoConfigurationImportSelector.class})
  給容器中導入組件?
  
EnableAutoConfigurationImportSelector: 導入哪些組件的選擇器;

  將全部須要導入的組件一全類名的方式返回;這些組件就會被添加到容器中;
  會給容器中導入很是多的自動配置類(xxxAutoConfiguration);就是給容器中導入這個場景須要的全部組件,並配置好這些組件
  



有了自動配置類,免去了咱們手動編寫配置注入功能組件等的工做;
  SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class, classLoader);

Spring Boot在啓動的時候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值做爲自動配置類導入到容器中,自動配置類就生效,幫咱們進行自動配置工做
之前咱們須要本身配置的東西,自動配置幫咱們;

J2EE的總體解決方案和自動配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar;
 

6. 使用Spring Initializer快速建立Spring Boot項目

   IDE都支持使用Spring的項目建立想到快速建立一個Spring Boot項目

  選擇咱們須要的模塊;嚮導會聯網建立Spring Boot項目;

  默認生成的Spring Boot項目;

  • 主程序已經生成好了,咱們只須要咱們本身的邏輯
  • resources文件假中目錄結構
    • static:保存全部的靜態資源;js css images;
    • templates:保存全部的模板頁面;(Spring Boot默認jar使用嵌入式的Tomcat,默認不支持JSP頁面);可使用模板引擎(freemarker、thymeleaf);
    • application.properties:Spring Boot應用的配置文件;能夠修改一些默認配置
相關文章
相關標籤/搜索