我的课看起来像

public class LevelDBStore implements DisposableBean {
  @Value("${leveldb.maxOpenFiles:1000}")
  private String maxOpenFilesValue;

 public LevelDBStore(String storeName, long cacheSizeInMb, int maxOpenFiles,DBComparator dbComparator) {
     storeLocation = new File(STORE_HOME, storeName);
     db = init(storeLocation, cacheSizeInMb, maxOpenFiles, dbComparator);
     isValid = true;
}

 private DB init(File storeLocation, long cacheSizeInMb, int maxOpenFiles,
  DBComparator dbComparator) {
    logger.info("MaxOpenFilesValue=" + maxOpenFilesValue);
   }
  .....
}


当这段代码运行时,我得到

11 Jan 2016 14:33:14,325 [INFO ] [main] LevelDBStore         | MaxOpenFilesValue=null


怎么了我通常与其他豆一起使用,但不与DisposableBean

最佳答案

您正在从构造函数中调用.init。 Spring的注入机制是在实际对象构造之后触发的,因此构造函数无法使用注入的成员。

不要直接调用.init,而应在方法上添加@PostConstruct批注。施工完成并完成注射后,Spring会自动调用它。

09-15 18:47