2013-02-22 118 views
0

是否有可能像这样的静态方法中注入的依赖:在静态方法注入依赖

@Component 
public class MyClass { 
    @Autowired 
    public static void main(String[] args) { 
     // do stuff 
    } 
} 

我所试图实现的是实现此工作代码自动装配:

@Component 
public class MyClass { 

    public static void main(String[] args, MyClass mc) { 
     ApplicationContext ctx = new GenericXmlApplicationContext("context.xml"); 
     MyClass p = ctx.getBean(MyClass.class); 
     // do stuff 
    } 
} 
+0

我觉得这是不可能的。由于主要方法是您的代码的入口点。我相信它是执行的第一行代码。虽然你的Spring上下文没有初始化,但你不能使用spring注解。 – 2013-02-22 01:13:04

+0

我试过这样做,因为我在使用maven打包应用程序时遇到问题,它无法加载context.xml,而当我从eclipse运行它时,它的工作原理 – xybrek 2013-02-22 05:51:55

+0

为什么?您的代码不会影响软件包。 – 2013-02-22 08:27:35

回答

1

首先,我敢肯定包含public static void main(String[] args, MyClass mc) {的第二个代码块不能作为启动应用程序的主要方法。

您将无法以这种方式使用自动装配。记住静态主要方法是进入你的应用程序,把它看作与你的类不同。当输入这个方法时,没有任何对象会被实例化,包括处理自动装配的Spring Context。

+0

我尝试这样做是因为我在使用maven打包应用程序时遇到问题,它无法加载context.xml,而当我从eclipse运行它时,它的工作原理 – xybrek 2013-02-22 05:52:20

+0

您的上下文不在jar中。对于所问的人来说,这是一个不同的问题。 – GuessBurger 2013-03-17 13:52:58