Есть ли способ запустить приложение Spring, настроенное аннотацией, непосредственно из основного метода? Я все еще получаю код запуска NullPointerException ниже. Обратите внимание, что я не использую SpringMVC, и когда я использую beans, определенные внутри context.xml, вводимые внутри основного метода методом context.getBean, весь код работает отлично (без ошибок), но мне просто интересно, является ли это способом управлять запуском этого только с аннотациями?Spring - NullPointerException при автоподготовке
//IElem.java
package com.pack.elem;
public interface IElem {
public abstract String sayHello();
}
//Elem.java
package com.pack.elem;
import org.springframework.stereotype.Component;
@Component
public class Elem implements IElem{
@Override
public String sayHello() {
return ("Hello from Elem class object");
}
}
//RunElem.java
package com.pack.elem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class RunElem {
@Autowired
private IElem elem;
public void runHello(){
System.out.println(elem.sayHello());
}
}
//Main.java
package com.pack.main;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.pack.elem.RunElem;
public class Main {
@Autowired
private RunElem runelem;
public static void main(String[] args) {
ApplicationContext context= new ClassPathXmlApplicationContext("/META-INF/application-context.xml");
new Main().runRun();
}
private void runRun(){
runelem.runHello();
}
}
<!--/META-INF/application-context.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.pack"/>
</beans>
Так что вы ожидаете экземпляр, созданный за пределами весны, который автоматически управляется весной. Вы не должны сами создавать экземпляры, но должны использовать тот, который уже настроен весной. Другими словами, извлеките его из 'ApplicationContext' вместо того, чтобы создавать свои собственные. –
@RakeshGoyal у вас есть право. Это похоже. Я этого раньше не видел. Может быть, это поможет. Благодарю. – kropla
@ M.Deinum теперь для меня ясно. Благодаря! – kropla