当前位置: 首页 > 知识库问答 >
问题:

如何使用spring boot创建公共库

鞠通
2023-03-14

现在我想为我们的系统开发一个通用的邮件服务。在设计时,我们希望开发一个RabbitMQ生产者和消费者。在消费者方面,我们可以开发和部署Spring BootSpring Cloud应用程序,但在生产者方面,我们希望提供一个通用的邮件客户端,如下面的接口,并为其他系统建立jar依赖关系。

interface MailClient {
  ListentableFuture send(Message message);
}

但我看到spring boot和spring cloud使用了许多声明性方法,似乎必须使用一个应用程序类,但我只想要一个类引用,不需要部署。我不知道如何实施它。

共有3个答案

唐威
2023-03-14

我的需求与您的类似,到目前为止,我已通过以下配置成功构建了一个可用于其他项目的库:

`

<modelVersion>4.0.0</modelVersion>
<groupId>mx.grailscoder</groupId>
<artifactId>library</artifactId>
<version>1.0-SNAPSHOT</version>
<name>My Custom Library built on Spring Boot</name>
<description>Spring Boot Project library</description>
<packaging>jar</packaging>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.4.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <logentries-appender>RELEASE</logentries-appender>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

`

值得一提的是,我跳过了重新打包任务,因为我的库没有任何主类,因此发出mvn安装任务不会失败。

云何平
2023-03-14

Spring留档准确地解决了这个问题,并显示了使用/for Spring Boot实现公共库的正确方法:

https://spring.io/guides/gs/multi-module/

正如留档所说:虽然没有使用Spring Boot Maven插件,但您确实希望利用Spring Boot依赖项管理。

陶原
2023-03-14

春柠檬就是一个很好的例子。它使用Spring Boot,并将包含在其他Spring Boot应用程序中。这就是我们创造它所做的:

  1. 使用STS的Spring Boot Starter向导创建了一个Spring Boot应用程序。
  2. 删除了生成的应用程序和测试类。
  3. 删除了spring-boot-maven-plugin,即pom.xml.中的构建和pluginRepositories部分(查看没有这些部分pom.xml的外观)。
 类似资料:
  • 嗨,我正在使用svg绘制线条,但我的问题是,我正在使用公共URL绘制线条`varsvgnode=document.createElementNs('http://www.w3.org/2000/svg','svg'); 如何在不使用公共URL的情况下实现相同的功能

  • 4.4.1.2 创建/使用公共服务 公共服务是应该由未指定的大量应用使用的服务。 有必要注意,它可能会收到恶意软件发送的信息(意图等)。 在使用公共服务的情况下,有必要注意,恶意软件可能会收到要发送的信息(意图等)。 下面展示了如何使用startService类型服务的示例代码。 要点(创建服务): 将导出属性显式设置为true。 小心并安全地处理接收到的意图。 返回结果时,请勿包含敏感信息。 A

  • 4.1.1.2 创建/使用公共活动 公共活动是应该由大量未指定的应用程序使用的活动。 有必要注意的是,公共活动可能收到恶意软件发送的意图。 另外,使用公共活动时,有必要注意恶意软件也可以接收或阅读发送给他们的意图。 要点(创建活动): 将导出属性显式设置为true。 小心并安全地处理接收到的意图。 返回结果时,请勿包含敏感信息。 下面展示了创建公共活动的示例代码。 AndroidManifest.

  • 我已经编写了一个库,过去我使用自编的Makefile编译它,但现在我想切换到cmake。树是这样的(我删除了所有不相关的文件): 我只是想把它编译到一个共享的文件库中。 我发现的大多数示例都使用一些共享库编译可执行文件,但绝不仅仅是一个普通的共享库。如果有人能告诉我一个使用cmake的非常简单的库,那也会很有帮助,所以我可以用这个作为例子。

  • 4.3.1.2 创建/使用公共内容供应器 公共内容供应器是应该由未指定的大量应用使用的内容供应器。 需要注意的是,由于它不指定客户端,它可能会受到恶意软件的攻击和篡改。 例如,可以通过select()获取保存的数据,可以通过update()更改数据,或者可以通过insert()/ delete()插入/删除假数据。 另外,在使用 Android OS 未提供的自定义公共内容供应器时,需要注意的是,

  • 我创建了一个具有REST Web服务和jpa依赖关系的Spring Boot应用程序。应用程序作为独立应用程序自行运行。我试图添加UI层使用vaadin作为一个单独的项目,使用sring引导项目的服务。有没有一种简单的方法可以使Spring Boot应用程序成为一个可以包含在其他项目中的库jar。 我搜索了论坛,发现一些建议不要使用Spring Boot,而是使用spring框架来创建库的线程。只