那么有没有一种方法来初始化和启动命令行Spring应用程序而无需编写main方法.似乎所有这些主要方法都具有相同的形式
public static void main(final String[] args) throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext("context.xml", Boot.class); FooService fooService = (FooService) ctx.getBean("fooService"); fooService.bar(); }
我想这并不复杂,但有人找到了一种方法来提供一种方法来指定context.xml
命令行,或者更好的是,在清单文件中?
这里的目标是将spring应用程序的创建简化为可执行jar.我希望我可以Main-Class
在清单中指定一些实用程序类.我想我还需要指定应用程序的起点,一个bean和一个方法来开始这个过程.
我会按照我的理解尝试回答这个问题:
如何打包一个包含弹簧配置的jar,比如我只需要使用
java -jar myjar.jar
?
你问题中的代码片段很有用.您不必参数化context.xml
.您只需要将代码及其依赖项(spring等)捆绑在一个jar中,并在jar文件中为主类提供适当的清单条目.
我个人使用maven 2,这里是一个pom.xml,我会用它来做到这一点:
4.0.0 com.stackoverflow stackoverflow-autostart-spring-app 0.1 org.springframework spring 2.5.2 maven-jar-plugin com.stackoverflow.spring.autostart.Autostart org.apache.maven.plugins maven-shade-plugin package shade
这是Java代码,源代码中是假设一些包名src/main/java
的目录和文件context.xml
的src/main/resources
目录.
所以在这里pom.xml
有几个要点:
春天依赖(我相信自己说话)
maven jar插件的配置,将主类添加为清单条目
的行家遮阳插件,它负责收集所有依赖/类和它们包装成一个单一罐中的插件.
可执行jar将在target\stackoverflow-autostart-spring-app-0.1.jar
运行时可用mvn package
.
我有这个代码都在我的盒子上工作但只是意识到我不能在这里附加一个zip文件.任何人都知道我可以这样做并链接到这里?
我在github上创建了一个git存储库,其中包含与此问题相关的代码,如果你想查看它的话.
希望这可以帮助.