我正在使用Spring,当我使用new运算符创建实例时,我将注入的实例作为null,我可以调整场景。
例如, 让A类和B类注入Main类
class Main
{
@autowired
A a;
@autowired
B b;
//getter and setter
}
class MainExecute
{
public static void main()
{
// loading the spring config xml
Main main = new Main();
A a=main.getA();
// whether a will get the instance ( I'm getting a as null)
}
这种情况可能是什么原因 请指导我同样的
提前致谢。
答案 0 :(得分:5)
不,它不会获得依赖注入。
只有spring容器创建/管理的对象才能获得spring依赖注入提供的功能。
答案 1 :(得分:4)
详细说明上述答案:
您需要让spring IOC容器为您创建对象,而不是显式创建它们。您可以通过创建spring config xml文件来完成此操作,这是一个简单的示例:
<强> META-INF \弹簧\我的 - 弹簧 - config.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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="myMainClass" class="org.foo.Main" />
<bean id="myA" class="org.foo.A" />
<bean id="myB" class="org.foo.B" />
</beans>
<强> org.foo.MainExecute:强>
class MainExecute
{
public static void main()
{
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("META-INF\\spring\\my-spring-config.xml");
Main main = (Main) appContext.getBean("myMainClass");
}
}
在此示例中,Spring IOC容器将实例化“A”bean和“B”bean。然后它会将它们自动装入“Main”bean。