spring - 将 Spring(Boot?)添加到现有的 RESTEasy JAX-RS 应用程序

标签 spring maven tomcat spring-boot jax-rs

我有一个基于使用 RESTEasy 的 JAX-RS 的现有 Maven 项目。效果很好!它创建了一个 WAR,我将其部署到在 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 使 Spring 更加出色,您可以将它与任何东西一起使用,并且它为您提供了一个执行器,使您可以实时了解系统的运行状况。

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

  • 通过 Spring 从外部配置文件(而非注释)获取基于配置文件的应用程序连接。
  • 从 Spring Boot 获得任何其他好处,因为它显然很棒,并且会彻底改变我的应用程序。

如何将 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);
        ...
    }
}

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

关于spring - 将 Spring(Boot?)添加到现有的 RESTEasy JAX-RS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44415118/

相关文章:

java - 我在 JEE 套接字项目 SLF4J : Failed to load class "org.slf4j.impl.StaticLoggerBinder" 中遇到错误

java - 当另一个配置文件被激活时自动激活一个配置文件

eclipse - 关于从 eclipse 的 tomcat 服务器内部运行 maven 构建的 resteasy 项目的详细说明?

java - 无法获取连接,DataSource 无效 : "java. sql.SQLException: 无法创建 PoolableConnectionFactory(通信链接失败

hibernate - 更改 Hibernate 中的默认多态性

java - 无法用maven编译Impala的前端

java - 必须只接受特定数值的 validator

tomcat - SEVERE : Failed to load keystore type JKS with path webapps/FT. keystore 由于签名溢出,TomCat 6 启动时字节数 = 128

Springs RestTemplate 默认连接池

java - Spring Bean 可以在不同地方使用还是在一个地方使用