1. 程式人生 > 其它 >@Value值為null、#和$的區別

@Value值為null、#和$的區別

獲取屬性值

在springboot中通過PropertySources註解讀取指定配置檔案

@PropertySource(value = {"classpath:env.properties"}, encoding = "utf-8")

值為null

這個屬性在env.properties中

@Value(value="${auth_bili}")
private String auth_bili;

但是debug的時候這個值顯示為null

被呼叫類的上半部分是這樣子的

@Component
public class BiliRequest implements Request {

    @Value(value
="${auth_bili}") private String auth_bili; // TODO 修改建構函式 private HttpHeaders _headers; private HttpEntity<String> formEntity; private Map<String, Object> maps; private RestTemplate restTemplate; public BiliRequest(){ restTemplate = new RestTemplate(); } ......

而呼叫這個類所生成的被呼叫類的例項用的是new biliRequest(),這一步導致@Value註解失效

應該在呼叫類中這麼寫

@Service(value = "ContentManagementService")
public class ContentManagementServiceImpl implements ContentManagementService {

    @Resource
    private UrlFactory urlFactory;

    @Resource
    private BiliRequest biliRequest;
......

不用new關鍵字,使用註解,通過spring框架的方式例項化,而不是jvm層面的例項化

在網上查到的@Value的其他原因

  • 呼叫類類沒有加上@Component(或者@service等)
  • 用static或者final修飾
論讀書
睜開眼,書在面前
閉上眼,書在心裡