SpringBoot個性化配置的方法步驟
在上一篇中我們簡單的介紹了SpringBoot項目的創(chuàng)建及其啟動方式。在這一篇中我們主要介紹一下SpringBoot項目的個性化配置。因為通過上一篇中知識我們知道SpringBoot項目的默認端口為8080,那如果我要修改這個默認端口,應(yīng)該怎么改呢?又比如SpringBoot項目在啟動時,默認是沒有項目名字的,那如果我們想要添加自己喜歡的項目名字又該怎么辦呢?這些都在這一篇的內(nèi)容中。好了,下面我們詳細介紹一下怎么修改SpringBoot項目中的默認配置。
修改默認端口
在上一篇的SpringBoot項目中我們看到在resources目錄中有一個application.properties文件,這個文件就是讓我們個性化配置SpringBoot項目參數(shù)的,也就是說,在這個文件中按照SpringBoot為我們提供的參數(shù)名,就可以直接修改SpringBoot項目的默認參數(shù)。下面我們嘗試修改SpringBoot項目的默認端口。具體修改如下:
在application.properties文件中添加下面的參數(shù),然后,啟動application.properties文件項目即可。
server.port=8081
并且如果我們使用IDEA開發(fā)工具時,當(dāng)我們在在application.properties文件中輸入?yún)?shù)時,IDEA就會自動為我們提供相關(guān)參數(shù)提示,這樣方便我們修改。也就是如下圖所示:

這時我們啟動SpringBoot項目并且用8080端口訪問項目時,發(fā)現(xiàn)已經(jīng)找不到服務(wù)了。

而如果我們用訪問8081端口訪問項目,則發(fā)現(xiàn)服務(wù)可以正常訪問。這就說明,我們已經(jīng)成功將SpringBoot項目的默認端口修改為8081端口了。

雖然上面的方式已經(jīng)成功的修改了SpringBoot項目的默認參數(shù),但在實際的開發(fā)中,并不推薦使用application.properties文件的方式修改,因為在SpringBoot項目中有更推薦的方式。也就是使用yml文件的方式。
application.yml文件
使用yml文件的方式修改默認參數(shù),也比較簡單,也就是把application.properties文件文件修改為application.yml文件即可。唯一不同的方式,就是yml文件有自己獨特的語法,和properties文件不同,可以省略很多參數(shù),并且瀏覽比較直觀。下面我們嘗試用yml文件的方式,將SpringBoot的端口修改為8082端口。

啟動項目后訪問剛剛的8081端口,發(fā)現(xiàn)項目已經(jīng)訪問不了。

這時我們訪問8082端口,發(fā)現(xiàn)項目訪問又正常了,這就說明我們使用yml的方式修改SpringBoot的默認參數(shù)方式成功了。
如果我們訪問http://localhost:8082/jilinwu...地址,即可看到SpringBoot接口返回的數(shù)據(jù)。

修改默認項目名
下面我們還將使用yml的方式配置SpringBoot項目的項目名。具體參數(shù)如下:
server: port: 8082 context-path: /springboot
我們繼續(xù)啟動項目然后依然訪問http://localhost:8082/jilinwu...地址,這時發(fā)現(xiàn)接口訪問失敗。

然后我們訪問http://localhost:8082/springb...地址,發(fā)現(xiàn)服務(wù)又可正常訪問了。

獲取配置文件中參數(shù)
在實際的項目開發(fā)中,我們通常會遇到,讀取配置文件中的參數(shù),那么在SpringBoot中怎么獲取配置文件中的參數(shù)呢?下面我們在配置文件中添加如下參數(shù)。
server: port: 8082 context-path: /springboot email: username: jilinwula password: 123456
下面我們在Controller中采用如下的方式讀取配置文件中的參數(shù)。
@RestController
@RequestMapping("/jilinwula")
public class JilinwulaController {
@Value("${email.username}")
private String username;
@Value("${email.password}")
private String password;
@RequestMapping("/helloworld")
public Object helloWorld() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("username", username);
map.put("password", password);
return map;
}
}
我們可以直接使用@Value注解來獲取配置文件中的參數(shù),并且這個注解不只是在SpringBoot中可以使用,這個注解在Spring的項目中也可以使用。下面我們啟動項目,并訪問http://localhost:8082/springb...地址,看看是不是可以成功的獲取配置文件中的參數(shù)。

我們看上圖所示,我們成功的獲取到了配置文件中的參數(shù)。但如果有強迫證的人,對于上面的代碼難免有些不滿意。因為如果我們要獲取配置文件中非常多的參數(shù)時,要是按照上面的代碼編寫,則需要在代碼中編寫大量的@Value注解,這顯然是不合理的。那有沒有比較方便的辦法呢?答案一定是有的,并且SpringBoot為我們提供了非常方便的方法獲取配置文件中的參數(shù)。下面我們看一下這種方式。
我們首先要在項目的pom.xml中添加以下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
第一個依賴是自動獲取配置文件參數(shù)的必須依賴,而下面的依賴,則是可以用注解的方式動態(tài)生成get和set方法,這樣我們在開發(fā)時,就不用在寫get和set方法了,在實際的項目中比較常用。在使用lombok生成get和set方法時,還要在IDEA中添加相應(yīng)的lombok插件,否則IDEA會提示到不到get和set方法的警告。

其次我們新創(chuàng)建一下獲取配置參數(shù)的類,并且添加@ConfigurationProperties注解,該注解會自動將配置文件中的參數(shù)注入到類中的屬性中(不需要寫@Value注解)。并且可以指定prefix參數(shù)來指定要獲取配置文件中的前綴。具體代碼如下:
package com.jilinwula.springboot.helloworld;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@Component
@ConfigurationProperties(prefix = "email")
@Data
public class EmailProperties {
private String username;
private String password;
}
上面中的@Data,注解就是動態(tài)生成get和set方法的所以上述的代碼是不需要寫get和set方法的。下面我們看一下Controller中的代碼修改:
package com.jilinwula.springboot.helloworld;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/jilinwula")
public class JilinwulaController {
@Autowired
private EmailProperties emailProperties;
@RequestMapping("/helloworld")
public Object helloWorld() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("username", emailProperties.getUsername());
map.put("password", emailProperties.getPassword());
return map;
}
}
下面我們啟動項目并訪問接口看看是否能夠成功獲取配置文件中的參數(shù)。

下面我們介紹一下在SpringBoot中怎么處理不同環(huán)境中獲取不同的配置參數(shù)。下面我們模擬兩人環(huán)境一個是開發(fā)環(huán)境,一個是測試環(huán)境,我們暫時以不同端口來區(qū)分這兩個環(huán)境的區(qū)別。
application-dev.yml:
server: port: 8081 context-path: /springboot email: username: jilinwula password: 123456
application-test.yml:
server: port: 8082 context-path: /springboot email: username: jilinwula password: 654321
application.yml:
spring: profiles: active: dev
這樣當(dāng)我們在application.yml文件中的參數(shù)設(shè)置為dev時,SpringBoot項目在啟動時就會讀取application-dev.yml中的參數(shù)。如果我們將參數(shù)設(shè)置為test時,則SpringBoot會讀取application-test.yml文件中的參數(shù)。
下面我們分別啟動項目并且訪問接口:
當(dāng)參數(shù)為dev:

當(dāng)參數(shù)為test:

啟動時指定參數(shù)
在上一篇中我們已經(jīng)介紹過了我們可以使用java -jar 項目的名字的方式啟動SpringBoot項目。并且,該方式還支持指定SpringBoot參數(shù),例如上面剛剛介紹的指定獲取同環(huán)境的配置參數(shù)。具體命里如下:
java -jar jilinwula-springboot-helloworld-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
我們此時繼續(xù)訪問接口發(fā)現(xiàn)還是成功的獲取了dev環(huán)境中的參數(shù)。

上述內(nèi)容就是SpringBoot個性化配置的內(nèi)容,如有不正確,或者需要交流的,歡迎留言,謝謝。
項目源碼:
https://github.com/jilinwula/jilinwula-springboot-helloworld2
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringBoot thymeleaf eclipse熱部署方案操作步驟
- springboot打包不同環(huán)境配置以及shell腳本部署的方法
- SpringBoot使用JDBC獲取相關(guān)的數(shù)據(jù)方法
- eclipse下整合springboot和mybatis的方法步驟
- SpringBoot之LogBack配置詳解
- springboot注冊bean的三種方法
- SpringBoot下使用定時任務(wù)的方式全揭秘(6種)
- SpringBoot項目集成日志的實現(xiàn)方法
- SpringBoot中關(guān)于static和templates的注意事項以及webjars的配置
- SpringBoot集成shiro,MyRealm中無法@Autowired注入Service的問題
相關(guān)文章
Springmvc 4.x利用@ResponseBody返回Json數(shù)據(jù)的方法
這篇文章主要介紹了Springmvc 4.x利用@ResponseBody返回Json數(shù)據(jù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
詳解OpenAPI開發(fā)如何動態(tài)的添加接口實現(xiàn)
這篇文章主要為大家介紹了OpenAPI開發(fā)如何動態(tài)的添加接口實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
Java對象Serializable接口實現(xiàn)詳解
這篇文章主要介紹了Java對象Serializable接口實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12
Javaweb實現(xiàn)在線人數(shù)統(tǒng)計代碼實例
這篇文章主要介紹了Javaweb實現(xiàn)在線人數(shù)統(tǒng)計代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
解決java調(diào)用python代碼返回值中文亂碼問題
這篇文章主要介紹了解決java調(diào)用python代碼返回值中文亂碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05

