мне нужно использовать среду внутри основного класса с аннотацией @springbootapplication - PullRequest
0 голосов
/ 29 мая 2019

Я попытался использовать автоматическую привязку переменной environement в основном методе весеннего бутаппликации и пытаюсь получить значение из application.properties и присвоить его переменной типа astring в классе основного метода.когда я печатаю и проверяю объект среды, он печатает ноль и заканчивается исключением нуль-указателя

public class App 
{
    @Autowired
    private Environment env;

    public String getData(){
        System.out.println(env);
        System.out.println(env.getProperty("app.name"));
        return env.getProperty("app.name");
    }
    private  String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public static void main( String[] args )
    {

        System.out.println("name is "+new App().getData());
        SpringApplication.run(App.class, args);

    }
}                                                                           
***in application.properties***                        

    app.name=aravind
    app.city=mumbai~

    Am getting null pointerexception if i call getProperty method, also env object is printing null

1 Ответ

1 голос
/ 29 мая 2019

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

для получения более подробной информации см. Это [ Spring Autowire внутри SpringBootApplication класс ведет себя по-разному между почти идентичными приложениями ]

что вы можете сделать, это создать другой класс, затем пометить его как @Component, а затем получить данные среды.

Пример

@Component
public class TestClass{
@Autowired
    private Environment env;

@Autowired
TestClass(Environment env){ //this is constructor
System.out.println("App Name: "+getData());
}
  public String getData(){
        System.out.println(env);
        System.out.println(env.getProperty("app.name"));
        return env.getProperty("app.name");
    }
}

также добавьте @ComponentScan("yourpackagename") после @SpringBootApplication в Главном классе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...