我可以“运行”spring上下文而无需在Eclipse中编写任何代码吗?

时间:2012-10-13 18:11:07

标签: java eclipse spring

我可以在Eclipse中运行JUnit测试,尽管它没有main()方法。我可以运行Ant xml,尽管它没有任何代码。

我可以用同样的方式运行Spring上下文吗?

我可以指示Eclipse在spring XML“runing”上快速运行如下所示的程序吗?

public class Runner {
    public static void main(String[] args) {
        new ClassPathXmlApplicationContext("/springtests/test04.xml");
    }
}

更新

这个问题是关于安慰的。我正在为弹簧配置编写很多测试。对于每个测试,我正在编写JUnit测试或上面的跑步者类。因此,我希望尽量减少工作量:能够使用弹簧配置右键单击XML文件并“运行”它。通过“运行”,我并不是指将XML加载到内存中并将CPU控制转移到内存中。

更新1

好的,我使用以下代码在项目中创建了SpringRunner

public class SpringRunner {
public static void main(String[] args) {
    new FileSystemXmlApplicationContext(args[0]);
}
}

接下来创建名为SpringRunner的运行/调试配置,并将此calss作为主类,并设置

${resource_loc}

在程序参数部分。

这样我只需点击几下就可以“运行”任何弹簧配置:

1)右键单击XML文件

2)选择“Run / Debug As ...”

3)选择“运行/调试配置......”

4)选择“SpringRunner”

5)单击“运行/调试”

现在的问题是,是否有可能缩短这一点?如何告诉Eclipse在右键单击并“运行/调试为”时立即将此选项显示在任何XML文件或任何文件上?

2 个答案:

答案 0 :(得分:0)

不,你甚至不能使用JUnit,....当你运行JUnit时,在内部它有一些具有main方法的util类,这个方法通过反射来运行你的junit类。

请记住,在java中没有办法可以在没有main方法的情况下运行任何代码。

class A{
       static{
              System.out.print("where is main");
       }

}

这个代码在类加载到jvm时起作用,这可能是我上面的单词的例外,但一般的答案是否定的。

快速问题为什么你需要在没有主要的情况下运行弹簧? 如果你认为junit是runnig没有main方法(实际上它有),那么使用像tomcat这样的app容器,你不必声明任何main方法,它运行你的代码,你的春天或任何你想要的。

答案 1 :(得分:0)

查看http://static.springsource.org/spring/docs/2.5.x/reference/testing.html#testcontext-framework

例如:

@RunWith(SpringJUnit4ClassRunner.class)
// ApplicationContext will be loaded from "/applicationContext.xml" and "/applicationContext-test.xml"
// in the root of the classpath
@ContextConfiguration(locations={"/applicationContext.xml", "/applicationContext-   test.xml"})
public class MyTest {
// class body...

}

希望我能帮忙......