配置的文件的格式
springboot可以識別兩種格式的配置文件,分別是yml和properties 文件。我們可以將application.properties文件換成application.yml,這兩個文件都可以被SpringBoot自動識別並加載,但是如果是自定義的配置文件,就最好還是使用properties格式的文件,因為SpringBoot中暫時還並未提供手動加載yml格式文件的功能(這里指注解方式)。
yml 配置文件 屬性格式:配置的屬性和屬性值要有空格隔開。沒有空格報:java.lang.IllegalArgumentException: Could not resolve placeholder 'my.name' in value "${my.name}"
server :
port : 8888
my :
name : forezp
age : 12
propreties文件 格式要求:
server.port=8888
my.name=forezp
my.age=12
application.properties配置文件欲被SpringBoot自動加載,需要放置到指定的位置:src/main/resource目錄下,一般自定義的配置文件也位於此目錄之下。
application.properties配置文件是在SpringBoot項目啟動的時候被自動加載的,其內部的相關設置會自動覆蓋SpringBoot默認的對應設置項,所以的配置項均會保存到Spring容器之中。
公共配置文件自定義屬性
1 server.port=8888 2 my.name= forezp 3 my.age=12
@RestController 訪問屬性類
package com.forezp.appConfig; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MiyaController { @Value("${my.name}") private String name; @Value("${my.age}") private int age; @RequestMapping("/hah") public String hah(){ return name+" : "+age; } }
運行springboot項目 ,運行成功 瀏覽器輸入網址:http://localhost:8888/hah
springboot 啟動類設置掃描包文件這里只是提下
瀏覽器訪問網址報404錯誤,如下:
直接報404錯誤,最后檢查了springboot 啟動類
package com.forezp.helloworld; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class HelloWorldApplication { public static void main(String[] args) { SpringApplication.run(HelloWorldApplication.class, args); } @GetMapping("/hi") public String hi (){ return "hi I'am forezp"; } }
最后才弄清楚:啟動類和對應的RestController類不在同一包下 。需要在啟動類上方添加@ComponentScan注解掃描com.forezp.appConfig 包下的文件
Spring Boot只會掃描啟動類當前包和以下的包 ,就是說現在我啟動類的包是在com.forezp.helloworld下面,然后他就只會掃描com.forezp.helloworld或者com.forezp.helloworld.*下面所以的包,所以我的Controller在com.forezp.appConfig包下面Spring Boot就沒有掃描到。
把controller類放到com.forezp.helloworld下面就好了