SpringBoot 是為了簡化 Spring應用的建立、執行、除錯、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規範,引入相關的依賴就可以輕易的搭建出一個 WEB 工程
application.properties的使用,主要用來配置資料庫連線、日誌相關配置等。除了這些配置內容之外,本文將具體介紹一些在application.properties配置中的其他特性和使用方法。
配置檔案
SpringBoot使用一個全域性的配置檔案,配置檔名是固定的;
•application.properties
•application.yml
配置檔案的作用:修改SpringBoot自動配置的預設值;SpringBoot在底層都給我們自動配置好;
在配置檔案中直接寫:
name=Isea533
server.port=8080
複製程式碼
.yml格式的配置檔案如:
name: Isea533
server:
port: 8080
複製程式碼
注意:使用.yml時,屬性名的值和冒號中間必須有空格,如name: HOWD正確,name:HOWD就是錯的。
屬性配置檔案的位置
spring會從classpath下的/config目錄或者classpath的根目錄查詢application.properties或application.yml。/config優先於classpath根目錄
自定義屬性配置
在 application.properties 寫入如下配置內容
my1.age=21
my1.name=HOWD
複製程式碼
然後定義demoProperties.java檔案,用來對映我們在application.properties中的內容,這樣一來我們就可以通過操作物件的方式來獲得配置檔案的內容了
@Component
@ConfigurationProperties(prefix = "my1")
public class demoProperties {
private int age;
private String name;
// 省略 get set
}
複製程式碼
當你加入ConfigurationProperties註解時,便變彈出這個警告,順著這條警告右邊的open Documentation會開啟Spring Boot官方文件。
B.3 Generating Your Own Metadata by Using the Annotation Processor You can easily generate your own configuration metadata file from items annotated with @ConfigurationProperties by using the spring-boot-configuration-processor jar. The jar includes a Java annotation processor which is invoked as your project is compiled. To use the processor, include a dependency on spring-boot-configuration-processor.
With Maven the dependency should be declared as optional, as shown in the following example:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
複製程式碼
大致意思是為了讓 Spring Boot 更好的生成配置後設資料檔案,也只是說要新增依賴,也沒說如果不這樣做會造成什麼影響。
接著去pom.xml去新增上面的依賴即可。
如果你是Gradle,請看官方文件Generating Your Own Metadata by Using the Annotation Processor
接下來定義controller來注入demoProperties,測試我們寫的程式碼是否正確。
@RequestMapping("/demo")
@RestController
public class PropertiesController {
private static final Logger log = LoggerFactory.getLogger(PropertiesController.class);
private final demoProperties demoProperties;
@Autowired
public PropertiesController(demoProperties demoProperties) {
this.demoProperties = demoProperties;
}
@GetMapping("/1")
public demoProperties myProperties1() {
log.info("=================================================================================================");
log.info(demoProperties.toString());
log.info("=================================================================================================");
return demoProperties;
}
}
複製程式碼
啟動之後,在瀏覽器輸入http://localhost:8080/demo/1
再看控制檯,像我這樣就完成了。
2018-09-27 15:32:32.587 INFO 3868 --- [nio-8080-exec-3] com.example.demo.PropertiesController : =================================================================================================
2018-09-27 15:32:32.587 INFO 3868 --- [nio-8080-exec-3] com.example.demo.PropertiesController : DemoProperties{age=21, name='HOWD'}
2018-09-27 15:32:32.587 INFO 3868 --- [nio-8080-exec-3] com.example.demo.PropertiesController : =================================================================================================
複製程式碼
多環境化配置
在真實開發中,會有多個環境,不同環境連線不同的資料庫,正式總不可能連線測試的資料庫。 這個時候就需要spring.profile.active,它的格式為application-{profile}.properties,這裡的 application 為字首不能改,**{profile}**是我們自己定義的。在resource路徑下建立三個.properties字尾的檔案。
- application-dev.properties
- application-test.properties
- application-prod.properties
在檔案中分別對應不同的server.servlet.context-path=/xxx xxx指上面的dev、test、prod。
接著在application.properties配置檔案中寫入spring.profiles.active=dev,這個時候我們再次訪問 http://localhost:8080/demo/1會發現沒用,因為我們設定了它的context-path=/dev,所以新的路徑就是 http://localhost:8080/dev/demo/1,由此可以看出來我們設定不同的配置讀取的是不一樣的。
隨機數屬性
Spring Boot 的屬性配置檔案中 ${random} 可以用來生成各種不同型別的隨機值,從而簡化了程式碼生成的麻煩,例如 生成 int 值、long 值或者 string 字串。
32位隨機字串
rand.str = ${random.value}
隨機int型別
rand.intid = ${random.int}
隨機long型別
rand.longid = ${random.long}
100以內的隨機int型別
rand.number = ${random.int(100)}
0-100範圍內的隨機int型別
rand.range = ${random.int[0,100]}
複製程式碼
banner
然後說一個好玩的。
大家再執行專案時,應該都會看到一個大大的Spring Boot
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.5.RELEASE)
複製程式碼
這個是可以修改的,方法也非常簡單。 只要在resource路徑下建立一個banner資料夾,然後建立banner.txt,把你喜歡的圖案複製進去。
進入這個網站 根據自己的喜好建立喜歡的圖案 patorjk.com/software/ta…
_ _ ______ _______
| | | |/ __ \ \ / / __ \
| |__| | | | \ \ /\ / /| | | |
| __ | | | |\ \/ \/ / | | | |
| | | | |__| | \ /\ / | |__| |
|_| |_|\____/ \/ \/ |_____/
複製程式碼
我根據我的名字建立了一個 然後放入banner.txt
執行就可以看到效果拉!
如果你要放.jpg .gif 格式也可以 只要在properties配置檔案中 加上 spring.banner.image.location=banner/xxx.jpg
然後執行就可以看到效果了,不過我試了幾張照片 都不好看:(
還有在banner.txt中,可以顯示spring-boot的版本 在圖案的下方加上 ${spring-boot.version} 即可
雖然沒什麼卵用,但就是很好玩的樣子,哈哈哈!
感謝你花時間讀到結尾!:D
後端一枚,默默搬磚擼程式碼,如果覺得不錯歡迎關注我的公眾號