![](/img/trans.png)
[英]Hikari doesn't read configuration from properties file in SpringBoot project
[英]Springboot can't read values from properties file
我有以下問題:我想從.properties
文件中讀取一些值(產品的價格)。
但是我正在嘗試,它總是以0.00
作為值。
這是我的服務 bean,我想在其中創建一個產品列表:
@Service
@ConfigurationProperties(prefix = "product-service")
public class ProductService {
private double first;
private double second;
private double third;
public double getFirst() {
return first;
}
public void setFirst(double first) {
this.first = first;
}
public double getSecond() {
return second;
}
public void setSecond(double second) {
this.second = second;
}
public double getThird() {
return third;
}
public void setThird(double third) {
this.third = third;
}
private List<ProductDTO> productList = Arrays.asList(
new ProductDTO(1, "Tomb Raider", first),
new ProductDTO(2, "10000 rp to lol", second),
new ProductDTO(3, "2k valorant points", third)
);
public List<ProductDTO> findAllProducts() {
return productList;
}
}
這是屬性文件:
product-service.first = 225.00
product-service.second = 320.50
product-service.third = 150.99
考慮到您使用prefix = "product-service"
您應該如下聲明您的 class 字段。
private double first;
private double second;
private double third;
您還應該更新 getter 和 setter。
您的代碼中還有另一個錯誤
private List<ProductDTO> productList = Arrays.asList(
new ProductDTO(1,"Tomb Raider",first),
new ProductDTO(2,"10000 rp to lol",second),
new ProductDTO(3,"2k valorant points",third)
);
當您的 class 被初始化時,該字段被初始化。 但是 Spring 使用代理初始化您的 bean。 因此,當productList
被初始化時,您的 productList 的first
、 second
、 third
將具有0
值。
如果你希望這個工作你應該更換
public List<ProductDTO> findAllProducts() {
return productList;
}
和
public List<ProductDTO> findAllProducts() {
return Arrays.asList(
new ProductDTO(1,"Tomb Raider",first),
new ProductDTO(2,"10000 rp to lol",second),
new ProductDTO(3,"2k valorant points",third)
);
}
不要將您的配置屬性與服務層混合。
你有幾種方法:
@ConfigurationProperties("product-service")
public class ProductProperties {
private Double first;
private Double second;
private Double third;
// getters & setters
}
並直接在您的服務中使用它 class:
class ProductService {
private ProductProperties properties;
// use at code: properties.getFirst()
}
根據您的 Spring 引導版本,您可能需要在標有@Configuration
的任何 class 下使用@EnableConfigurationProperties({ProductProperties.class})
@Value
:class ProductService {
@Value("${product-service.first}")
private double first;
//...
}
您應該設置為您的主要 class:
有用的鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.