java - 自动启动 Spring 应用程序

标签 java spring

那么有没有一种方法可以在不编写 main 方法的情况下初始化和启动命令行 Spring 应用程序。似乎所有这些主要方法都具有相同的形式

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();
}

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

这里的目标是简化 spring 应用程序作为可执行 jar 的创建。我希望我可以在 list 中指定一些实用程序类作为 Main-Class。我想我还需要指定应用程序的起点、一个 bean 和一个方法,它是流程开始的地方。

最佳答案

我会尽量按照我的理解来回答这个问题:

How to package a jar containing a spring configuration such as I just need to use java -jar myjar.jar?

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

我个人使用 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>

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

所以在这个pom.xml中有几个重点:

  1. spring 依赖(我相信不言自明)
  2. maven jar plugin 的配置, 将主类添加为 list 条目
  3. maven shade plugin ,这是负责收集所有依赖项/类并将它们打包到一个 jar 中的插件。

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

我的盒子上都有这段代码,但我才意识到我无法在此处附加 zip 文件。任何人都知道我可以这样做的地方并链接到这里?

我创建了一个 git repository at github如果您想查看,请提供与此问题相关的代码。

希望这对您有所帮助。

关于java - 自动启动 Spring 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/171130/

相关文章:

java - ImageButton 背景颜色更改 onClick

Java OSGI。 Maven vs Eclipse+Ant - 最佳实践

Java 日期早于 1923 年

java - 文件上传时使用 Spring Security 的 Spring 4.0 MVC 中缺少多部分请求的内容

android - Spring RestTemplate : post both an image and an object at the same time

java - 以圆形路径移动 ImageView

java - 获取特定数量的记录在 Hibernate 中不起作用

java - 使用 Spring Security 登录页面进行表单验证

java - 使用 Spring 注入(inject) Google Guava Hashmultimap

java - 在测试之间重置 JPA 生成的值