弹簧注入在用户创建的实例中工作?

时间:2013-03-20 07:16:36

标签: java spring inversion-of-control

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

 }

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

提前致谢。

2 个答案:

答案 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。