自动启动弹簧应用程序

sbl*_*ndy 2 java spring

那么有没有一种方法来初始化和启动命令行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();
}
Run Code Online (Sandbox Code Playgroud)

我想这并不复杂,但有人找到了一种方法来提供一种方法来指定context.xml命令行,或者更好的是,在清单文件中?

这里的目标是将spring应用程序的创建简化为可执行jar.我希望我可以Main-Class在清单中指定一些实用程序类.我想我还需要指定应用程序的起点,一个bean和一个方法来开始这个过程.

SaM*_*SaM 6

我会按照我的理解尝试回答这个问题:

如何打包一个包含弹簧配置的jar,比如我只需要使用java -jar myjar.jar

你问题中的代码片段很有用.您不必参数化context.xml.您只需要将代码及其依赖项(spring等)捆绑在一个jar中,并在jar文件中为主类提供适当的清单条目.

我个人使用maven 2,这里是一个pom.xml,我会用它来做到这一点:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.stackoverflow</groupId>
  <artifactId>stackoverflow-autostart-spring-app</artifactId>
  <version>0.1</version>

  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring</artifactId>
      <version>2.5.2</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>com.stackoverflow.spring.autostart.Autostart</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
Run Code Online (Sandbox Code Playgroud)

这是Java代码,源代码中是假设一些包名src/main/java的目录和文件context.xmlsrc/main/resources目录.

所以在这里pom.xml有几个要点:

  1. 春天依赖(我相信自己说话)
  2. maven jar插件的配置,将主类添加为清单条目
  3. 行家遮阳插件,它负责收集所有依赖/类和它们包装成一个单一罐中的插件.

可执行jar将在target\stackoverflow-autostart-spring-app-0.1.jar运行时可用mvn package.

我有这个代码都在我的盒子上工作但只是意识到我不能在这里附加一个zip文件.任何人都知道我可以这样做并链接到这里?

在github上创建了一个git存储库,其中包含与此问题相关的代码,如果你想查看它的话.

希望这可以帮助.