微服務之springboot 自定義配置(一)Application配置文件


配置的文件的格式

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下面就好了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM