использование автопроводных объектов в основном классе - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть MainClass класс, подобный этому:

@Component
public class MainClass {

@Autowired
private Class1 object1;

@Autowired
private Class2 object2;

public static void main(String args[]) {

  ApplicationContext context = new ClassPathXmlApplicationContext("myFolder/myXml.xml");
  context.getBean("object1").someFunc();
}

}

XML file :

...
<bean id="randomBean" class="com.myProject.randomBean" 
 init-method="initRandom()"  destroy-method="destroyRandom()">
        <constructor-arg index="0"
            value="${someValue}"></constructor-arg>
</bean>
<bean id ="object1" class="com.myProject.Class1" />

<bean id ="object2" class="com.myProject.Class2" />
<!-- My other beans including object1 and object2 are in this xml file -->
...

randomBean класс:

public class randomBean {

@Autowired
private Properties p;

public void initRandom() {
/*
The server starts normally but when that Xml file is loaded 
through MainClass this throws a Null Pointer Exception ( p is null)
*/
p.calc();
}
}

Ошибка / релевантная трассировка стека :

Обнаружено исключение org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем ' randomBean ', определенный в ресурсе пути к классу [myFolder / my Xml .xml]: сбой вызова метода init; вложенное исключение: java .lang.NullPointerException

Также сервер для этого приложения запускается, а затем запускается MainClass.

Цель : Я хочу использовать объекты с автопроводкой внутри основного класса.

Примечание. Я не пытаюсь создать новый объект, как предлагается здесь: Почему мое поле Spring @Autowired имеет значение null? Я только пытаюсь получить бобы

...