Как использовать переменную экземпляра в статической области, если класс автоматически подключается при весенней загрузке

/* This condition will ariese when we will read the values from property file and there a change to use this value in static area  */

  @Component

    public class Employee{

    String name="radhe";

    }

    public class Address{

    @Autowired

    Employee employee;

    public static void display(){

    employee.name;

    }

    }

Привет @vishnu, боюсь, совсем не понятно, какую проблему ты хочешь решить. Вы не можете создавать экземпляры переменных из статического контекста. Но это просто свойство Java и не зависит от Spring. Пожалуйста, опишите, чего вы хотите достичь, и мы сможем вам помочь.

Jens Schauder 10.09.2018 08:11

Привет, JensSchauder, у меня есть класс Employee, в котором есть некоторая переменная, я хочу прочитать значения из файла свойств с помощью @ConfigurationProperties, и мне нужно использовать эту переменную в статической области. Если я возьму статическую переменную в классе Employee, я не смогу прочитать значения из файла свойств.

VRadhe 10.09.2018 08:28

Почему этот раздел должен быть статичным? Почему бы вам не использовать, например, Spring Bean Employee и не внедрить его везде, где вы сейчас используете статическую переменную. Также: каково семантическое значение отображения имени «служащего» без какого-либо значения полного определения «служащего», поскольку у вас может быть много таких?

Jens Schauder 10.09.2018 10:26

Нет, сэр, Employee - это просто имя класса для примера, имя класса может быть любым, а переменные могут иметь другое имя, но концепция заключалась в том, как использовать переменную экземпляра в статической области

VRadhe 11.09.2018 06:59
2
4
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Невозможно использовать переменную экземпляра в статическом блоке, возможно, вам придется изменить свою логику, чтобы включить ее.

Ответ принят как подходящий

Попробуй это.

1. конструктор инъекций

public class Address{

      private static Employee employee;

      @Autowired
      public Address(Employee employee){
        Address.employee= employee;
      }

      public static void display(){
        employee.name;
      }
 }

2. пост построить

 public class Address{

         private static Employee employee;

         @Autowired
         private Employee employeeI;

         @PostConstruct
         public void init() {
           Address.employee= employeeI;
         }

          public static void display(){
            employee.name;
          }
     }

Пожалуйста, прочтите мой вопрос еще раз.После применения вашей логики я получаю нулевое значение, у меня есть класс Employee, в котором есть некоторая переменная, я хочу прочитать значения из файла свойств с помощью @ConfigurationProperties, и мне нужно использовать трехпеременную в статической области . Если я возьму статическую переменную в классе Employee, я не смогу прочитать значения из файла свойств.

VRadhe 10.09.2018 08:51

Другие вопросы по теме