@Autocâblés bean est nulle lorsqu'elle est référencée dans le constructeur d'un autre bean

Indiqué ci-dessous est un extrait de code où j'essaie de référence et de mon ApplicationProperties bean. Quand j'référence du constructeur qu'il est nul, mais lorsqu'ils sont référencés à partir d'une autre méthode, il est très bien. Jusqu'à maintenant, je n'ai pas eu aucun problème avec ce autocâblés bean dans d'autres classes. Mais c'est la première fois que j'ai essayé de l'utiliser dans le constructeur d'une autre classe.

Dans l'extrait de code ci-dessous applicationProperties est nulle lorsqu'elle est appelée à partir du constructeur, mais lorsqu'il est référencé dans le convertir méthode qu'elle ne l'est pas. Ce qui me manque

@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();
    ...

Ci-dessous est extrait de 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");
  }
  • Pouvons-nous voir votre xml?
InformationsquelleAutor hairyone | 2011-06-13