Ниже представлен фрагмент кода, где я пытаюсь ссылаться на мои ApplicationProperties bean. Когда я ссылаюсь на это из конструктора, он имеет значение null, но если ссылаться на другой метод, это нормально. До сих пор у меня не было проблем с использованием этого автоуверенного bean в других классах. Но это первый раз, когда я попытался использовать его в конструкторе другого класса.
В фрагменте кода ниже applicationProperties имеет значение null при вызове из конструктора, но при упоминании в методе преобразования это не так. Что мне не хватает
@Component
public class DocumentManager implements IDocumentManager {
  private Log logger = LogFactory.getLog(this.getClass());
  private OfficeManager officeManager = null;
  private ConverterService converterService = null;
  @Autowired
  private IApplicationProperties applicationProperties;
  // If I try and use the Autowired applicationProperties bean in the constructor
  // it is null ?
  public DocumentManager() {
  startOOServer();
  }
  private void startOOServer() {
    if (applicationProperties != null) {
      if (applicationProperties.getStartOOServer()) {
        try {
          if (this.officeManager == null) {
            this.officeManager = new DefaultOfficeManagerConfiguration()
              .buildOfficeManager();
            this.officeManager.start();
            this.converterService = new ConverterService(this.officeManager);
          }
        } catch (Throwable e){
          logger.error(e);  
        }
      }
    }
  }
  public byte[] convert(byte[] inputData, String sourceExtension, String targetExtension) {
    byte[] result = null;
    startOOServer();
    ...
Ниже приведен фрагмент из ApplicationProperties...
@Component
public class ApplicationProperties implements IApplicationProperties {
  /* Use the appProperties bean defined in WEB-INF/applicationContext.xml
   * which in turn uses resources/server.properties
   */
  @Resource(name="appProperties")
  private Properties appProperties;
  public Boolean getStartOOServer() {
    String val = appProperties.getProperty("startOOServer", "false");
    if( val == null ) return false;
    val = val.trim();
    return val.equalsIgnoreCase("true") || val.equalsIgnoreCase("on") || val.equalsIgnoreCase("yes");
  }