溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Springboot外置怎么配置

發(fā)布時(shí)間:2022-10-18 11:54:12 來(lái)源:億速云 閱讀:124 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹“Springboot外置怎么配置”,在日常操作中,相信很多人在Springboot外置怎么配置問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Springboot外置怎么配置”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

Springboot 外置配置


spring Boot 自動(dòng)配置的bean提供了300多個(gè)用于微調(diào)的屬性.當(dāng)調(diào)整設(shè)置時(shí),只需要在環(huán)境變量,Java系統(tǒng)屬性,JNDI,命令行參數(shù),屬性文件進(jìn)行配置 就好了.

舉例:

假設(shè)我們想要禁止啟動(dòng)springboot應(yīng)用時(shí)的 banner .有以下幾種方法:

1.在屬性文件中指定 application.properties

spring.main.show-banner=false

2.在 應(yīng)用程序的命令行參數(shù)中指定

$ java -jar myapp.jar --spring.main.show-banner=false

3.還可以將屬性設(shè)置為環(huán)境變量

如果你用的是bash或者zsh,可以使用 export 命令

$ export spring.main.show-banner=false

配置嵌入式服務(wù)器

從命令行運(yùn)行springboot應(yīng)用程序時(shí),應(yīng)用程序會(huì)啟動(dòng)一個(gè)嵌入式的服務(wù)器,監(jiān)聽(tīng)8080端口.如果想要修改默認(rèn)端口,
可以使用命令行參數(shù)

$ java -jar myapp.jar --server.port=80

配置日志

默認(rèn)情況下,springboot會(huì)使用 Logback來(lái)記錄日志,并用INFO級(jí)別輸出到控制臺(tái).

使用其他日志替換掉Logback

一般來(lái)說(shuō),你不需要切換日志實(shí)現(xiàn),Logback能很好滿(mǎn)足你的需要.但是如果你決定要使用Log4j 或者Log4j2,

你只需要修改依賴(lài):引入對(duì)應(yīng)的日志實(shí)現(xiàn)的起步依賴(lài),同時(shí)排除掉Logback 即可.

以maven為例:

在maven里,可以用 來(lái)排除傳遞依賴(lài)

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

然后加入Log4j的起步依賴(lài)即可

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

設(shè)置日志級(jí)別和日志輸出文件位置:

在applecation.properties 中以logging開(kāi)頭.

在 idea中會(huì)有很好的提示

配置數(shù)據(jù)源

在配置文件中

########################
#數(shù)據(jù)庫(kù)配置
##########################

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.properties.hibernate.hbm2ddl.auto=update
# 主要是指定生成表名的存儲(chǔ)引擎為InneoDB
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
# 是否打印出自動(dòng)生產(chǎn)的SQL,方便調(diào)試的時(shí)候查看
spring.jpa.show-sql= true

cDNPXUfy">在自動(dòng)配置 dataSource Bean的時(shí)候,Spring boot會(huì)使用這里的連接數(shù)據(jù).

DataSource是一個(gè)連接池,如果Classpath下有Tomcat的連接池 DataSource,那么就會(huì)使用這個(gè)連接池,否則Spring Boot會(huì)在Classpath里查找一下連接池:

  • HikariCp

  • Commons DBCP

  • Commons DBCP2

這里列出的是自動(dòng)配置支持的連接池.你還可以配置DataSource的Bean,使用你喜歡的各種連接池.

如果我們想要使用 druid 連接池,如何做呢,其實(shí)關(guān)于 druid,已經(jīng)有一個(gè)起步依賴(lài):

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.0</version>
        </dependency>

只需要添加這個(gè)依賴(lài),Springboot就會(huì)自動(dòng)檢測(cè)Classpath下是否有druid存在,如果有,就是用它.

在一個(gè)類(lèi)里收集屬性

現(xiàn)在我們?cè)?applecation.properties 中有一個(gè)屬性值,以weixin開(kāi)頭

#####################
#在一個(gè)類(lèi)里收集屬性
######################

weixin.appid = 12346

我們要在Controller里獲取這個(gè)屬性值,現(xiàn)在我們考慮用一個(gè)屬性類(lèi)來(lái)獲取所有與weixin相關(guān)的配置信息,

新建一個(gè)類(lèi) WeixinProperties.java

/**
 * 收集配置文件的weixin 前綴屬性
 *
 * @author itguang
 * @create
@Component
//注入帶 weixin 前綴的屬性
@ConfigurationProperties(prefix = "weixin")
public class WeixinProperties


    private String appid;

    //提供getter 和 setter方法
    public String getAppid() {
        return appid;
    }

    public void setAppid(String appid) {
        this.appid = appid;
    }
}

因?yàn)槭褂昧薂Component注解,所以這個(gè)屬性類(lèi)是一個(gè)Bean,這樣我們就可以在Controller里把它注入進(jìn)來(lái):

@RestController
public class WeixinController

    @Autowired
    private WeixinProperties weixinProperties;

    @RequestMapping(value = "test")
    public String test(){

      return

使用 Profile進(jìn)行配置

當(dāng)應(yīng)用程序需要部署到不同的運(yùn)行環(huán)境中去,一些配置細(xì)節(jié)通常會(huì)有所不同.
比如數(shù)據(jù)庫(kù)連接的細(xì)節(jié)在開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境就會(huì)不一樣,在生產(chǎn)環(huán)境下又會(huì)不一樣.
Spring Framework 從Spring3.1開(kāi)始支持基于Profile的配置.
Profile是一種條件化配置,基于運(yùn)行時(shí)激活的Profile,會(huì)使用或者激活不同的Bean或者配置類(lèi).

為了演示Profile的屬性,假設(shè)我們希望針對(duì)生產(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境有不同的配置.該怎莫做呢?這取決于你是用的是屬性文件配置還是YAML配置.

這里我們以屬性配置文件為例

使用特定基于Profile的屬性文件

如果你正在使用 application.properties ,可以創(chuàng)建兩個(gè)額外的屬性文件,遵循 application-{profile}.properties這種命名格式.

在日志這個(gè)例子里,開(kāi)發(fā)環(huán)境的配置放在 application-devlopment.properties

logging.level.root=debug

生產(chǎn)環(huán)境的配置放在 application-production.properties

logging.level.root= warn

如何激活呢,在application.properties設(shè)置 spring.profiles.active 屬性就能激活特定的Profile.

######################
#日志配置
#####################
# 設(shè)置激活特定的Profile

或者在命令行啟動(dòng)程序時(shí),指定激活的Profile

$ java -jar myapp.jar --spring.profiles.active=devlopment

另外我們還可以在java配置類(lèi)里面指定特定的Profile

/**
 * 指定特定Profile的配置類(lèi)
 *
 * @author itguang
 * @create
@Configuration
@Profile("devlopment")
public class ProfileConfigTest
    //...

意思是只有激活 devlopment 的Profile時(shí),才會(huì)應(yīng)用此配置類(lèi),如果 devlopment 對(duì)應(yīng)的Profile
沒(méi)有被激活的話(huà)就會(huì)忽略此配置.

需要注意的是,application.properties 屬性文件中的配置對(duì)所有的Profile都生效.

覆蓋自動(dòng)配置其實(shí)很簡(jiǎn)單,就是顯示的編寫(xiě)那些沒(méi)有SpringBoot 時(shí)你需要的Spring配置.
Spring Boot的自動(dòng)配置被設(shè)置為優(yōu)先使用應(yīng)用程序提供的配置,然后才輪到自己的自動(dòng)配置.

到此,關(guān)于“Springboot外置怎么配置”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI