quarkus 新增注解将BigDecimal自动保留两位小数
时间: 2023-08-18 10:40:48 浏览: 48
Quarkus 提供了一个名为 `@ConfigMapping` 的注解,可以用于将应用程序配置映射到 Java 类中。您可以使用此注解将 `BigDecimal` 的默认保留位数设置为两位小数。
首先,在您的 `application.properties` 文件中添加以下配置:
```
myapp.decimal.scale=2
```
然后,在您的 Java 类中使用 `@ConfigMapping` 注解:
```java
import io.quarkus.runtime.annotations.ConfigGroup;
import io.quarkus.runtime.annotations.ConfigMapping;
@ConfigMapping(prefix = "myapp")
public class MyAppConfig {
DecimalConfig decimal;
}
@ConfigGroup
public class DecimalConfig {
int scale;
}
```
最后,在您的代码中,您可以使用 `@Inject` 注入 `MyAppConfig` 对象,并在需要使用 `BigDecimal` 时将其保留到两位小数:
```java
import javax.inject.Inject;
import java.math.BigDecimal;
public class MyService {
@Inject
MyAppConfig config;
public void doSomething() {
BigDecimal value = new BigDecimal("123.456");
value = value.setScale(config.decimal.scale, BigDecimal.ROUND_HALF_UP);
// ...
}
}
```
这样,`value` 将被设置为保留两位小数的 `BigDecimal` 对象。注意,在使用 `setScale` 方法时,第一个参数是保留的小数位数,第二个参数是舍入模式。在本例中,使用的是 `ROUND_HALF_UP` 舍入模式,它将四舍五入到最接近的数。