一、SpringBoot入門

1.Spring Boot簡介

簡化spring應(yīng)用開發(fā)的一個框架
整個spring技術(shù)棧的一個大整合
J2EE開發(fā)的一站式解決方案

2.微服務(wù)

微服務(wù):軟件架構(gòu)風(fēng)格
一個應(yīng)用應(yīng)該是一組小型服務(wù);可以通過HTTP的方式進(jìn)行互通;
單體應(yīng)用:ALL IN ONE
微服務(wù):每一個功能單元最終都是一個可獨(dú)立替換和獨(dú)立升級的軟件單元;

3.環(huán)境準(zhǔn)備

環(huán)境約束:
-jdk 1.8
-maven 3.3以上版本
-idea 2017
-SpringBoot 1.5.9

3.1 MAVEN設(shè)置

給maven的setttings.xml配置文件的profiles標(biāo)簽添加

<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>

3.2 IDEA設(shè)置

整合maven進(jìn)來


image.png
image.png

4.Spring Boot HelloWorld

一個功能:
瀏覽器發(fā)送hello請求,服務(wù)器接受請求并處理,響應(yīng)HelloWolrd字符串;

4.1創(chuàng)建一個maven工程;(jar)

4.2導(dǎo)入spring boot相關(guān)的依賴

    <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> 

4.3編寫一個主程序;啟動Spring Boot應(yīng)用

/**
 *  @SpringBootApplication 來標(biāo)注一個主程序類,說明這是一個Spring Boot應(yīng)用
 */
@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args) {

        // Spring應(yīng)用啟動起來
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

4.4 編寫相關(guān)的Controller、Service

@Controller
public class HelloController {

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

4.5 運(yùn)行主程序測試

4.6簡化部署

    <!-- 這個插件,可以將應(yīng)用打包成一個可執(zhí)行的jar包;-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

將這個應(yīng)用通過 maven插件打包成jar包,然后通過java -jar命令運(yùn)行

5.Hello Wolrd探究

5.1 POM文件

5.1.1 父項目

    <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應(yīng)用里面的所有依賴版本

Spring Boot的版本仲裁中心
以后我們導(dǎo)入的依賴默認(rèn)是不需要寫版本;(沒有在dependencies里面管理的依賴自然需要聲明版本號)

5.1.2啟動器

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

spring-boot-starter-web:
spring-boot-starter:spring-boot 場景啟動器;幫我們導(dǎo)入web模塊正常運(yùn)行所依賴的組件;

Spring Boot將所有的功能場景抽取出來,做成一個個的starter(啟動器),只需要在項目里面引入這些starter相關(guān)場景的所有依賴都會導(dǎo)入進(jìn)來。要用什么功能就導(dǎo)入什么場景的啟動器

5.2 主程序類,主入口類

/**
 *  @SpringBootApplication 來標(biāo)注一個主程序類,說明這是一個Spring Boot應(yīng)用
 */
@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args) {

        // Spring應(yīng)用啟動起來
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

@SpringBootApplication:spring boot應(yīng)用標(biāo)注在某個類上說明這個類是Spring Boot的主配置類,SpringBoot就應(yīng)該運(yùn)行這個類的main方法來啟動SpringBoot應(yīng)用;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {

@SpringBootConfiguration:Spring Boot的配置類
標(biāo)注在某個類上,表示這是一個Spring Boot的配置類;
@Configuration:配置類上來標(biāo)注這個注解
配置類-----配置文件;配置類也是容器的一個組件;@Component
@EnableAutoConfiguration:開啟自動配置功能;

以前我們需要配置的東西,Spring Boot邦我們自動配置;@EnableAutoConfiguration告訴SpringBoot開啟自動配置功能;這樣自動配置才能生效;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({EnableAutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

@AutoConfigurationPackage:自動配置包

Spring的底層注解@Import,給容器中導(dǎo)入一個組件;導(dǎo)入的組件由EnableAutoConfigurationImportSelector.class;
將主配置類(@SpringBootApplication標(biāo)注的類)的所在包及下面所有子包里面的所有組件掃描到Spring容器;

@Import({EnableAutoConfigurationImportSelector.class})
給容器中導(dǎo)入組件?
EnableAutoConfigurationImportSelector:導(dǎo)入那些組件
將所有需要導(dǎo)入的組件以全類名的方式返回;這些組件就會被添加到容器中;
會給容器中導(dǎo)入非常多的自動配置類(***AutoConfiguration);就是給容器中導(dǎo)入這個場景需要的所有組件,并配置好這些組件;

image.png

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

Spring Boot 在啟動的時候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值作為自動配置類導(dǎo)入到容器中,自動配置類就生效,幫我們進(jìn)行自動配置的工作;以前我們需要自己配置的東西,自動配置類都做完了;
J2EE的整體整合解決方案和自動配置都在spring-boot-autoconfigure-1.5.9RELEASE.jar;

6.使用Spring Initializer快捷創(chuàng)建Spring Boot項目

6.1 IDEA:使用Spring Initializer快速創(chuàng)建項目


image.png

選擇我們需要的模塊;向?qū)?lián)網(wǎng)創(chuàng)建Spring Boot項目;



默認(rèn)生成的Spring Boot項目;

  • 主程序已經(jīng)生成好了,我們只需要寫自己的邏輯
  • resources文件夾中目錄結(jié)構(gòu)
    ** static:保存所有的靜態(tài)資源:js css images;
    ** templates:保存所有的模板頁面 ;(Spring Boot默認(rèn)jar包使用嵌入式的tomcat,默認(rèn)不支持jsp頁面);可以使用模板引擎(freemarker、thymeleaf);
    ** application.properties:Spring Boot應(yīng)用的配置文件;可以修改一些默認(rèn)配置;比如server.port=8081
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容