Динамический доступ к alfresco-global.properties - PullRequest
0 голосов
/ 03 октября 2019

Я не могу получить доступ к значениям alfresco-global.properties динамически, хотя я прочитал этот пост: [ Доступ к значениям из файла alfresco-global.properties Alfresco

Вот мой conf:

service-context.xml

<bean id="AccesGlobalPropertiesService" class="com.package.ksc.services.AccesGlobalPropertiesService">
     <property name="properties">
        <ref bean="global-properties"/>
    </property>
</bean>

AccesGlobalPropertiesService.java

import org.springframework.stereotype.Service;
import java.util.Properties;

@Service
public class AccesGlobalPropertiesService {

    public Properties properties;

    public void setProperties(Properties properties) {
        this.properties = properties;
    }
    public Properties getProperties() {
        return properties;
    }
}

Worker.java

public abstract class ClassifierServiceCommon {

   private AccesGlobalProperties accesGlobalProperties;
   private Properties properties;    

   /* Contructor */

   protected Worker(accesGlobalProperties){
     this.accesGlobalProperties= accesGlobalProperties;
   }

...
...
...

   protected Boolean propAcces(){

      accesGlobalProperties.properties.getProperty("myPropKey");
      ...
   }
}

Я получаю NullPointerExeception, когда явызовите getProperty ("myPropKey") ...

Что не так, пожалуйста? Спасибо'S

Ответы [ 3 ]

1 голос
/ 13 ноября 2019

Похоже, что вы допустили ошибку при определении двух бинов с разными идентификаторами:

  1. Один бин происходит из XML, его идентификатор явно указан как "AccesGlobalPropertiesService". Его поле properties установлено правильно.
  2. Другой компонент происходит от сканирования компонентов Spring (благодаря аннотации @Service), его идентификатор неявно установлен на "accesGlobalPropertiesService". Его поле properties не установлено, поскольку для этого поля отсутствует аннотация @Resource или @Autowired (см., Например, этот вопрос о том, как их использовать).

И тогда вы, скорее всего, используете второй (неполный) из вашего ClassifierServiceCommon класса. (Вы не указали, как вы получаете бин там.)

0 голосов
/ 13 ноября 2019
0 голосов
/ 12 ноября 2019

Вы должны инициализировать переменную (похоже, вы этого не делаете). Вам нужно установить ProProperty (), прежде чем вы получите ProProperty (). Пока вы не инициализируете свойства в классе AccesGlobalPropertiesService, ваш getProperty () будет возвращать ноль.

Я не знаю, пытаетесь ли вы это сделать здесь:

protected Boolean propAcces(){

  accesGlobalProperties.properties.getProperty("myPropKey");
  ...
}

Если это так, вам следует изменить getProperty на setProperty.

Надеюсь, это поможет вам:)

...