【问题标题】:Adding dependency on another standalone Spring project?添加对另一个独立 Spring 项目的依赖?
【发布时间】:2014-07-08 08:11:13
【问题描述】:

我正在创建两个不同但相关的应用程序。第一个应用程序是 iPhone/Android 应用程序的后端,而另一个是虚拟商店。这两个系统不相互依赖。所以我可以只部署虚拟商店或只部署后端。

这两个应用程序都应该针对同一个用户数据库进行身份验证。所以我开始了第三个应用程序来访问这个保存用户对象的数据库。 我首先想到的是这个应用程序也可以独立运行。

问题是我应该如何在其他应用程序中使用这个共享用户存储库应用程序?

  • 我是否应该创建对服务层工件和域工件的依赖关系,并将 Spring 配置文件导入我创建的其他应用程序中?

  • 我应该创建一个 Web 服务,以便在其他应用程序中请求用户数据吗?

或者还有其他更好的选择吗?后端和虚拟商店都是应用了 REST 原则的 Web 服务。例如,在虚拟商店中,我需要访问公共存储库中的用户数据以及添加商店特定的详细信息。

【问题讨论】:

  • 我假设常见的 Web 应用程序是一个 maven WAR 项目?
  • @JamesB 还没有。它目前只是一个 JAR。我有域、存储库和服务层。那是用户应用程序。另一个应用程序所依赖的应用程序,因为它们将对用户进行身份验证等等。
  • 其他应用程序要使用哪些层?
  • 从底层数据库获取信息的服务层保存所有用户信息 + 域层用于访问 User 等类。这意味着两个 Maven 依赖项。
  • 我会根据领域理解另一个项目,但不确定服务层。为什么其他应用依赖服务层?

标签: java spring maven jakarta-ee


【解决方案1】:

就我而言,我确实喜欢这样(项目 A 用于 B。):-

要将一个项目用于另一个项目,我正在使用 httpcomponents-client-4.2.2 库。

第 1 步:将 A 的 jar 复制到 B。

第 2 步:在项目 B 中:-

HTTPClientHelper httpClientHelper = new HTTPClientHelper();
HttpEntity httpEntity = httpClientHelper.GET(uri + param);
InputStream inputStream = httpEntity.getContent();
//    ... do other stuffs

第 3 步:在 HTTPClientHelper 类中

// Constructor
public HTTPClientHelper() {
    httpclient = new DefaultHttpClient();
    localContext = new BasicHttpContext();
}

// Execute HTTP GET method of given Service URL
public HttpEntity GET(String url) {
    HttpGet get = new HttpGet(url);

    try {
        response = httpclient.execute(get, localContext);
        httpEntity = response.getEntity();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return httpEntity;
}

// Execute HTTP POST method of given Service URL
public HttpEntity POST(String url, boolean sendData) {

    HttpPost post = new HttpPost(url);
    if (sendData) {
        post.setEntity(getUrlEncodedFormEntity());
    }
    try {
        response = httpclient.execute(post, localContext);
        httpEntity = response.getEntity();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return httpEntity;
}

// Create a list of <name, value> for user name & password
public void createHttpEntity(String name, String value) {
    try {
        nameValuePairs.add(new BasicNameValuePair(name, value));
        setUrlEncodedFormEntity(new UrlEncodedFormEntity(nameValuePairs));
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
}

public UrlEncodedFormEntity getUrlEncodedFormEntity() {
    return urlEncodedFormEntity;
}

public void setUrlEncodedFormEntity(UrlEncodedFormEntity urlEncodedFormEntity) {
    this.urlEncodedFormEntity = urlEncodedFormEntity;
}

【讨论】:

  • 这到底是怎么回答这个问题的?
猜你喜欢
  • 1970-01-01
  • 2017-02-26
相关资源
最近更新 更多