将弹簧(启动?)添加到现有的Resteasy Jax-Rs应用程序中



我使用ResteAsy具有基于JAX-RS的现有Maven项目。它效果很好!它创造了一场我部署到在Ubuntu上运行的Tomcat的战争。它很干净,遵循最新标准。POM很简单:

...
<packaging>war</packaging>
...
<dependencies>
...
  <dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.0.1</version>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>3.1.0.Final</version>
  </dependency>
  <dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-servlet-initializer</artifactId>
    <version>3.1.0.Final</version>
  </dependency>
  <dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson2-provider</artifactId>
    <version>3.1.0.Final</version>
  </dependency>
...
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.5.1</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.0.0</version>
    </plugin>
  </plugins>
...

我不需要任何web.xml,因为我正在使用最新的Java EE注释:

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/")
public class MyRESTApplication extends Application {
  final FooResource fooResource = new FooResourceService();
...
  @Override
  public Set<Object> getSingletons() {
    return ImmutableSet.of(fooResource);
  }
}

这一切都很简单,而且工作得很好!现在,我只需要一种方法来轻松根据个人资料更改FooResource实现,换句话说,是我的单身人士。那是春天来的地方,对吗?有人告诉我,春靴使春季更加棒,您可以将其与任何东西一起使用,它为您提供了一个执行器,使您可以在系统的健康状态中实时获得实时。

不幸的是,所有的春季靴子和教程似乎都认为我从他们的快速启动应用程序开始。但是我已经有一个很棒的简单应用程序。我只想:

  • 通过春季的外部配置文件(而非注释(,根据配置文件获取我的应用程序接线。
  • 获得春季靴子的其他善良,因为它显然很棒,并且会完全改变我的应用程序。

如何将Spring(或Spring Boot(添加到此简单的小Jax-Rs应用程序?

我们以这种方式解决了它,我们创建了一个单身spring bean,我们称其为servicestArtupClass,我们在其中注册了所有JAX-RS服务。

在这里一些代码段我们如何启动我们的服务:

import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
@Component
@ApplicationPath("/")
public class ServiceStartupClass extends ResourceConfig {
    @PostConstruct
    public void startup() {
        register(FooResource.class);
        ...
    }
}

如果您需要进一步的帮助,请告诉我

最新更新