0

我正在使用 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) 

 }

这种情况可能是什么原因请指导我

提前致谢。

4

2 回答 2

5

不,它不会得到依赖注入。

只有由 spring 容器创建/管理的对象才能获得 spring 依赖注入提供的设施。

于 2013-03-20T07:20:39.053 回答
4

要详细说明上述答案:

您需要让 spring IOC 容器为您创建对象,您无需显式创建它们。您可以通过创建一个 spring config xml 文件来做到这一点,这是一个简单的示例:

META-INF\spring\my-spring-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。然后它会将这些自动装配到“主”bean中。

于 2013-03-20T07:36:29.123 回答