spring boot yml 文件的新的配置@value无法读取
问题:在一个工具类中,通过@Value来映射配置文件的值,得到的总是null原因:不能用new工具类的方式,应该是用容器注册(@Autowried)的方式使用此工具类,就能得到配置文件里的值上代码:工具类:package com.***.***.utils;import org.springframework.beans.factory.annotation.Value...
·
问题:在一个工具类中,通过@Value来映射配置文件的值,得到的总是null
原因:不能用new工具类的方式,应该是用容器注册(@Autowried)的方式使用此工具类,就能得到配置文件里的值
上代码:
工具类:
package com.***.***.utils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import system.Decimal;
import java.math.BigDecimal;
@Component
public class RoundCalculationUtil {
@Value("${***.round.calculation}")
private String calculationWay;
public BigDecimal reCalculateAmount(BigDecimal amount){
if(calculationWay.equals("currencyround")){
return currencyRound(amount);
}else {
return round(amount);
}
}
public BigDecimal round(BigDecimal amount) {
BigDecimal result = amount.setScale(0, BigDecimal.ROUND_DOWN);
BigDecimal lastRound2 = amount.setScale(2, BigDecimal.ROUND_DOWN).subtract(result);
if (lastRound2.compareTo(new BigDecimal("0.50")) >= 0) {
result = result.add(new BigDecimal("1"));
}
return result;
}
public BigDecimal currencyRound(BigDecimal amount){
BigDecimal result = amount.setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal firstRound4=amount.setScale(4,BigDecimal.ROUND_DOWN);
BigDecimal lastRound2=firstRound4.subtract(firstRound4.setScale(2,BigDecimal.ROUND_DOWN));
if(lastRound2.compareTo(new BigDecimal("0.0005"))>=0){
result=result.add(new BigDecimal("0.01"));
}
return result;
}
}
调用的地方
@Autowired
RoundCalculationUtil roundCalculationUtil;
@RequestMapping(value = "/roundtest", method = RequestMethod.GET)
public ResponseData<String> roundTest(@RequestParam(value = "amount", required = true, defaultValue = "100.1111") BigDecimal amount,
@RequestParam(value = "roundcalculation", required = false, defaultValue = "currencyround") String roundcalculation) {
try {
BigDecimal result=roundCalculationUtil.reCalculateAmount(amount);
//BigDecimal result=new RoundCalculationUtil ().reCalculateAmount(amount);//will get null from .properties file
DecimalFormat df = new DecimalFormat("0.00");
return new ResponseData(NotificationMsg.SUCCESS, df.format(result));
} catch (Exception e) {
logger.error(e);
return new ResponseData(NotificationMsg.FAILED, e);
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)