1. 程式人生 > >【SpringBoot】核心依賴和自動配置

【SpringBoot】核心依賴和自動配置

之前介紹了springboot是有多麼的好,那麼,我們現在通過一個小demo來看他是有多麼的強大!

一、核心pom引入

        我們可以知道一般的專案引入了的基本包和spring一些連線池,再加上幾個配置檔案還有應用伺服器(或者web伺服器),就可以直接執行起來了。那麼springboot要如何做呢?

首先就是核心依賴了:

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.5.2.RELEASE</version>
</parent>

這個parent是springboot最最核心的引入,所有的配置都在裡面,並且是springboot專案必須引入的。

當然現在都是web專案居多,我們還需要引入一個需要的依賴:

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

然後可以的話還可以引入一個外掛:
<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>


引入這些東西之後,我們可以在一個包中新建一個類,然後寫入以下程式碼:

@Controller
@SpringBootApplication
@Configuration
public class HelloApplication {
    
    @RequestMapping("hello")
    @ResponseBody
    public String hello(){
        return "hello world!";
    }
    
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }

}

之後直接用javaApplication 的run方式,我們就可以直接將springboot的這個專案run起來,可以在控制檯看到:


然後我們在瀏覽器中輸入:http://localhost:8080/hello

就可以看到如下頁面:


這樣,我們就啟動了一個簡單的springboot專案。

二、核心自動配置

        我們可以在專案中看到,其實我們就是寫了一個類,為什麼連tomcat都不用,就可以直接啟動一個web程式呢?這一切都是從springboot的配置說起。

        還記得我們引入pom了一個spring-boot-starter-web了麼,這個就是spring所依賴的web專案模板,我們可以在maven管理器的依賴中找到這些已經預設載入好的東西:


        我們可以直觀的看到,tomcat,hibernate,還有一些web專案需要用的東西全部都引入到了專案中,在專案啟動的時候就是呼叫的他們,然後我們就相當於吧tomcat也啟動了一樣的感覺,為我們的開發配置省了不少事情。

然後我們再來看我們寫的這個類,為什麼可以直接用web來啟動呢,根據上一篇文章的介紹,java的配置方式起到了很強的作用,那就是我們可以利用註解去輕易的配置一些我們想要配置的東西,springboot就是利用了這一點。我們可以看到我們的類上面除了java的@Configuration之外,還有一個是springboot的配置項@SpringBootApplication,這個註解的引入,就預設為我們自動的配置了一些常用的配置。


那麼,它都自動為我們配置了什麼呢?我們可以找到library的jar包引入,找到一個springboot的autoconfigure來看一下:


我們展開看一下會發現很多熟悉的東西:


        是不是看到了很多熟悉的身影呢,我們可以在每個包下面都找到一個帶有AutoConfigure的類,這就是用java配置方式寫的預設配置:


當然,這些都是預設的配置,我們如果想要自己配置一個元件要怎麼把預設的配置取消呢?其實很簡單,因為每個springboot專案都必須有一個核心的帶有@SpringBootApplication註解的類作為入口,所以我們只需要在這個註解上消除這個配置類的引入就可以了,例如:

@Controller
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, KafkaAutoConfiguration.class})
@Configuration
public class HelloApplication {
    
    @RequestMapping("hello")
    @ResponseBody
    public String hello(){
        return "hello world!";
    }
    
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }

}

通過這樣用exclude的方式就把mongo和kafka的自動配置去掉了,我們就可以自己進行配置了。

相關推薦

SpringBoot核心依賴自動配置

之前介紹了springboot是有多麼的好,那麼,我們現在通過一個小demo來看他是有多麼的強大!一、核心pom引入        我們可以知道一般的專案引入了的基本包和spring一些連線池,再加上幾

SpringBoot起步依賴自動配置原理分析

http boot com 技術 bsp oot png pri nbsp SpringBoot起步依賴和自動配置原理分析

system關掉\禁用win7自動配置ipv4地址的方法 預設閘道器自動消失的解決辦法

1、具體清空如下    設定好IP後,無論怎麼樣都上不了internet,再次開啟本地後發現預設閘道器自動消失,cmd下輸入ipconfig後的顯示如下:    實體地址. . . . . . . . . . . . . : 00-22-64-55-76-8F   DHCP 已啟用 . . . . .

小D課堂SpringBootSpringBoot熱部署devtool配置文件自動註入實戰

生效 相關 not test depend 啟動應用 設置 應用程序 path ========================3、SpringBoot熱部署devtool和配置文件自動註入實戰 3節課============================ 加入小D課堂

SpringBootspring-boot-自動配置原理

思考:配置檔案到底能寫什麼?怎麼寫?自動配置原理; 1.自動配置原理 springboot自動配置主演通過@EnableConfiguration,@Conditional,@EnableConfigurationProperties或者@ConfiguraionProp

SpringBootSpringBoot核心-基本配置

怎麼建立springboot專案就不再累贅介紹啦 入口類和@SpringBootApplication SpringBoot 通常有一個名為*Application的入口類,入口類裡有一個main方法,這個main方法其實就是一個標準的Java應用的

springboot基於springboot執行原理實現springboot自動配置

    本文參照Http編碼的配置原始碼,自己實現一個starter。    1.新建maven工程。    在pom.xml中修改,新增autoconfigure依賴:<project xmlns="http://maven.apache.org/POM/4.0.0"

方法lwip-2.0.2配置DHCP自動從路由器獲取IP地址DNS伺服器地址, 並設定NetBIOS計算機名

本文使用是STM32F107VC微控制器的有線乙太網外設ETH和DP83848外部PHY收發器。 如果使用的是Keil uVision5的編譯器,需要檢查一下lwip/include/arch/cc.h裡面是否有下面這一行: #define PACK_STRUCT_BE

WPF關於依賴屬性的ValidateValueCallback,PropertyChangedCallbackCoerceValueCallback的執行順序

value read ado args cep img 強制轉換 .cn clas 三個回調對應依賴屬性的驗證過程,改變過程和強制轉換過程。 class Dobj : DependencyObject { //依賴屬性包裝 public int MyPro

JMeterHTTP請求:自動重定向跟隨重定向

【Jmeter】HTTP請求:自動重定向和跟隨重定向 自動重定向 跟隨重定向 在JMeter中的設定 自動重定向 HttpClient接收到請求後,如果請求中包含重定向請求,HttpClient是可以自動跳轉的,但是隻針對Get與H

SpringBoot 啟動時,修改預設配置檔名稱

前言 spring boot version : 2.0.0.RELEASE maven version : 3.5.0 在不同的環境下,依賴的外部資源是不一樣的。比如,在windows上開發,在linux下進行測試時,無法將開發環境和測試i環境構造成一致的。

SpringBootSpringBoot2.x 配置 筆記

最近試著搭建一個SpringBootDemo,版本為2.0.5.RELEASE,使用JDK1.8,使用druid連線池,日誌使用log4j2,記錄一下自己遇到的問題吧。 日誌問題   在spring-boot-starter或者(spring-boot-starter-we

springboot2、Controller引數

類上的配置 @RestController public class SpringdemoApplication { ... } 其中@RestController表示返回string或者json內容(即直接返回內容),而如果是@Controller則表示可以返回

SpringBoot過濾器配置

package com.construn.procure.common; import org.springframework.beans.factory.annotation.Autowired;

springboot@RequestBody@ResponseBody以及@PathVariable的使用及區別

1、@RequestBody和@ResponseBody @RequestBody (通過@requestBody可以將請求體中的JSON字串繫結到相應的bean上,當然,也可以將其分別繫結到對應的字串上。實質上接受的是一個JSON的字串)  1) 該註解用於讀取Requ

ScalaCake模式依賴注入

依賴注入(Dependency Injection)和控制反轉(Inversion of Control) Dependency Injection & Inversion of Control是Martin Fowler在2004年所提出來的一個概念

SpringBoot表單驗證使用AOP處理請求

表單驗證 專案是上篇文章繼續的。 首先說下要幹嘛,我們需要攔截People年齡在18歲以下的 首先是在People上的年齡增加一個註解 @Min(value = 18,message = "年齡必須大於18")//message為提示

SpringBoot配置檔案

引言 Spring Boot使用了一個全域性的配置檔案application.properties,放在src/main/resources目錄下或者類路徑的/config下。Sping Boot的全域性配置檔案的作用是對一些預設配置的配置值進行修改。

SpringBoot— Spring Boot配置檔案詳解

Spring Boot配置檔案詳解Spring Boot提供了兩種常用的配置檔案,分別是properties檔案和yml檔案。他們的作用都是修改Spring Boot自動配置的預設值。相對於properties檔案而言,yml檔案更年輕,也有很多的坑。可謂成也蕭何敗也蕭何,y

SpringBoot配置跨域訪問

在主啟動類Application.java類裡面加入: private CorsConfiguration buildConfig() { CorsConfiguration corsCon