国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一起來學(xué)SpringBoot | 第二篇:SpringBoot配置詳解

leap_frog / 1846人閱讀

摘要:如何測(cè)試進(jìn)入到項(xiàng)目目錄,此處以我本地目錄為主然后打開程序,不會(huì)在當(dāng)前目錄打開的請(qǐng)自行百度,輸入打包完畢后進(jìn)入到目錄中去,我們可以發(fā)現(xiàn)一個(gè)名為的包接著在打開程序,輸入。

SpringBoot 是為了簡(jiǎn)化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動(dòng)裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴就可以輕易的搭建出一個(gè) WEB 工程

上一篇介紹了 SpringBoot 由來及構(gòu)建方式,通過第一章的教程我們對(duì) SpringBoot 不在感到陌生,可以發(fā)現(xiàn) SpringBoot 雖然干掉了 XML 但未做到 零配置,它體現(xiàn)出了一種 約定優(yōu)于配置,也稱作按約定編程,是一種軟件設(shè)計(jì)范式,旨在減少軟件開發(fā)人員需做決定的數(shù)量,獲得簡(jiǎn)單的好處,而又不失靈活性。 一般情況下默認(rèn)的配置足夠滿足日常開發(fā)所需,但在特殊的情況下,我們往往需要用到自定義屬性配置、自定義文件配置、多環(huán)境配置、外部命令引導(dǎo)等一系列功能。不用擔(dān)心,這些 SpringBoot 都替我們考慮好了,我們只需要遵循它的規(guī)則配置即可

準(zhǔn)備前提

為了讓 SpringBoot 更好的生成數(shù)據(jù),我們需要添加如下依賴(該依賴可以不添加,但是在 IDEA 和 STS 中不會(huì)有屬性提示,沒有提示的配置就跟你用記事本寫代碼一樣苦逼,出個(gè)問題弄哭你去),該依賴只會(huì)在編譯時(shí)調(diào)用,所以不用擔(dān)心會(huì)對(duì)生產(chǎn)造成影響...


    org.springframework.boot
    spring-boot-configuration-processor
    true
自定義屬性配置

application.properties 寫入如下配置內(nèi)容

my1.age=22
my1.name=battcn

其次定義 MyProperties1.java 文件,用來映射我們?cè)?application.properties 中的內(nèi)容,這樣一來我們就可以通過操作對(duì)象的方式來獲得配置文件的內(nèi)容了

package com.battcn.properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @author Levin
 * @since 2018/4/23 0023
 */
@Component
@ConfigurationProperties(prefix = "my1")
public class MyProperties1 {

    private int age;
    private String name;
    // 省略 get set

    @Override
    public String toString() {
        return "MyProperties1{" +
                "age=" + age +
                ", name="" + name + """ +
                "}";
    }
}

接下來就是定義我們的 PropertiesController 用來注入 MyProperties1 測(cè)試我們編寫的代碼,值得注意的是 Spring4.x 以后,推薦使用構(gòu)造函數(shù)的形式注入屬性...

import com.battcn.properties.MyProperties1;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Levin
 * @since 2018/4/23 0023
 */
@RequestMapping("/properties")
@RestController
public class PropertiesController {

    private static final Logger log = LoggerFactory.getLogger(PropertiesController.class);

    private final MyProperties1 myProperties1;

    @Autowired
    public PropertiesController(MyProperties1 myProperties1) {
        this.myProperties1 = myProperties1;
    }

    @GetMapping("/1")
    public MyProperties1 myProperties1() {
        log.info("=================================================================================================");
        log.info(myProperties1.toString());
        log.info("=================================================================================================");
        return myProperties1;
    }
}

打開瀏覽器,輸入如下地址: http://localhost:8080/properties/1,觀察控制臺(tái),監(jiān)聽到如下內(nèi)容則表示程序正確

2018-04-23 15:51:43.145  INFO 15352 --- [nio-8080-exec-2] c.b.controller.PropertiesController      : =================================================================================================
2018-04-23 15:51:43.145  INFO 15352 --- [nio-8080-exec-2] c.b.controller.PropertiesController      : MyProperties1{age=22, name="battcn"}
2018-04-23 15:51:43.145  INFO 15352 --- [nio-8080-exec-2] c.b.controller.PropertiesController      : =================================================================================================
自定義文件配置

定義一個(gè)名為 my2.properties 的資源文件,自定義配置文件的命名不強(qiáng)制 application 開頭

my2.age=22
my2.name=Levin
my2.email=1837307557@qq.com

其次定義 MyProperties2.java 文件,用來映射我們?cè)?my2.properties 中的內(nèi)容。

package com.battcn.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * @author Levin
 * @since 2018/4/23 0023
 */
@Component
@PropertySource("classpath:my2.properties")
@ConfigurationProperties(prefix = "my2")
public class MyProperties2 {

    private int age;
    private String name;
    private String email;
    // 省略 get set 

    @Override
    public String toString() {
        return "MyProperties2{" +
                "age=" + age +
                ", name="" + name + """ +
                ", email="" + email + """ +
                "}";
    }
}

接下來在 PropertiesController 用來注入 MyProperties2 測(cè)試我們編寫的代碼

@GetMapping("/2")
public MyProperties2 myProperties2() {
    log.info("=================================================================================================");
    log.info(myProperties2.toString());
    log.info("=================================================================================================");
    return myProperties2;
}

打開瀏覽器,輸入如下地址: http://localhost:8080/properties/2,觀察控制臺(tái),監(jiān)聽到如下內(nèi)容則表示程序正確

2018-04-23 15:59:45.395  INFO 6232 --- [nio-8080-exec-4] c.b.controller.PropertiesController      : =================================================================================================
2018-04-23 15:59:45.395  INFO 6232 --- [nio-8080-exec-4] c.b.controller.PropertiesController      : MyProperties2{age=22, name="Levin", email="1837307557@qq.com"}
2018-04-23 15:59:45.395  INFO 6232 --- [nio-8080-exec-4] c.b.controller.PropertiesController      : =================================================================================================
多環(huán)境化配置

在真實(shí)的應(yīng)用中,常常會(huì)有多個(gè)環(huán)境(如:開發(fā),測(cè)試,生產(chǎn)等),不同的環(huán)境數(shù)據(jù)庫(kù)連接都不一樣,這個(gè)時(shí)候就需要用到spring.profile.active 的強(qiáng)大功能了,它的格式為 application-{profile}.properties,這里的 application 為前綴不能改,{profile} 是我們自己定義的。

創(chuàng)建 application-dev.propertiesapplication-test.propertiesapplication-prod.properties,內(nèi)容分別如下

application-dev.properties
server.servlet.context-path=/dev
application-test.properties
server.servlet.context-path=/test
application-prod.properties
server.servlet.context-path=/prod

application.properties 配置文件中寫入 spring.profiles.active=dev,這個(gè)時(shí)候我們?cè)诖卧L問 http://localhost:8080/properties/1 就沒用處了,因?yàn)槲覀冊(cè)O(shè)置了它的context-path=/dev,所以新的路徑就是 http://localhost:8080/dev/properties/1 ,由此可以看出來我們激活不同的配置讀取的屬性值是不一樣的

外部命令引導(dǎo)

前面三種方式都是基于配置文件層面的,那么有沒有辦法外部引導(dǎo)呢,假設(shè)這樣的場(chǎng)景,我們對(duì)已經(jīng)開發(fā)完成的代碼打包發(fā)布,期間在測(cè)試環(huán)境測(cè)試通過了,那么即可發(fā)布上生產(chǎn),這個(gè)時(shí)候是修改application.properties的配置方便還是直接在命令參數(shù)配置方便呢,毫無疑問是后者更有說服力。默認(rèn)情況下,SpringApplication 會(huì)將命令行選項(xiàng)參數(shù)(即:--property,如--server.port=9000)添加到Environment,命令行屬性始終優(yōu)先于其他屬性源。

如何測(cè)試?

進(jìn)入到項(xiàng)目目錄,此處以我本地目錄為主:F:/battcn-workspace/spring-boot2-learning/chapter2

然后打開 cmd 程序,不會(huì)在當(dāng)前目錄打開 cmd 的請(qǐng)自行百度,輸入:mvn package

打包完畢后進(jìn)入到:F:/battcn-workspace/spring-boot2-learning/chapter2/target 目錄中去,我們可以發(fā)現(xiàn)一個(gè)名為chapter2-0.0.1-SNAPSHOT.jar 的包

接著在打開 cmd 程序,輸入:java -jar chapter2-0.0.1-SNAPSHOT.jar --spring.profiles.active=test --my1.age=32。仔細(xì)觀察spring.profiles.active=testmy1.age=32 這倆配置的鍵值是不是似曾相識(shí)(不認(rèn)識(shí)的請(qǐng)從開頭認(rèn)真閱讀)

最后輸入測(cè)試地址:http://localhost:8080/test/properties/1 我們可以發(fā)現(xiàn)返回的JSON變成了 {"age":32,"name":"battcn"} 表示正確

總結(jié)

掌握@ConfigurationProperties@PropertySource 等注解的用法及作用

掌握編寫自定義配置

掌握外部命令引導(dǎo)配置的方式

目前很多大佬都寫過關(guān)于 SpringBoot 的教程了,如有雷同,請(qǐng)多多包涵,本教程基于最新的 spring-boot-starter-parent:2.0.1.RELEASE編寫,包括新版本的特性都會(huì)一起介紹...

說點(diǎn)什么

個(gè)人QQ:1837307557

battcn開源群(適合新手):391619659

微信公眾號(hào)(歡迎調(diào)戲):battcn

個(gè)人博客:http://blog.battcn.com/

全文代碼:https://github.com/battcn/spring-boot2-learning/tree/master/chapter2

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/71367.html

相關(guān)文章

  • SpringBoot非官方教程 | 二篇SpringBoot配置文件詳解

    摘要:采納了建立生產(chǎn)就緒應(yīng)用程序的觀點(diǎn)。優(yōu)先于配置的慣例,旨在讓您盡快啟動(dòng)和運(yùn)行。啟動(dòng)工程,訪問我們會(huì)發(fā)現(xiàn)配置文件信息讀到了。三自定義配置文件上面介紹的是我們都把配置文件寫到中。源碼下載五參考文獻(xiàn)干貨系列二配置文件解析屬性配置文件詳解 springboot采納了建立生產(chǎn)就緒Spring應(yīng)用程序的觀點(diǎn)。 Spring Boot優(yōu)先于配置的慣例,旨在讓您盡快啟動(dòng)和運(yùn)行。在一般情況下,我們不需要做...

    荊兆峰 評(píng)論0 收藏0
  • 起來學(xué)SpringBoot | 第十二篇:初探RabbitMQ消息隊(duì)列

    摘要:用于控制活動(dòng)人數(shù),將超過此一定閥值的訂單直接丟棄。緩解短時(shí)間的高流量壓垮應(yīng)用。目前比較推薦的就是我們手動(dòng)然后將消費(fèi)錯(cuò)誤的消息轉(zhuǎn)移到其它的消息隊(duì)列中,做補(bǔ)償處理消費(fèi)者該方案是默認(rèn)的方式不太推薦。 SpringBoot 是為了簡(jiǎn)化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動(dòng)裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相...

    Baoyuan 評(píng)論0 收藏0
  • SpringBoot非官方教程 | 第二二篇: 創(chuàng)建含有多module的springboot工程

    這篇文章主要介紹如何在springboot中如何創(chuàng)建含有多個(gè)module的工程,栗子中含有兩個(gè) module,一個(gè)作為libarary. 工程,另外一個(gè)是主工程,調(diào)用libary .其中l(wèi)ibary jar有一個(gè)服務(wù),main工程調(diào)用這個(gè)服務(wù)。 創(chuàng)建根工程 創(chuàng)建一個(gè)maven 工程,其pom文件為: 4.0.0 com.forezp springboot-multi-...

    Scott 評(píng)論0 收藏0
  • Java3y文章目錄導(dǎo)航

    摘要:前言由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 前言 由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時(shí)間才會(huì)更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號(hào):Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡(jiǎn)單 注解就這么簡(jiǎn)單 Druid數(shù)據(jù)庫(kù)連接池...

    KevinYan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<