如何在 2 个项目之间共享存储库和服务 类
How to share Repository and Service classes between 2 projects
我正在处理 2 个项目,一个 Web 应用程序 (Spring MVC) 和一个独立的后端服务应用程序 (Spring boot),它们会大量交互。我对两者都使用休眠,并且它们都使用 Netbeans IDE 进行编码。
我的 "issue" 是我最终在两个项目中都有重复的代码,主要是在存储库和服务层。我的实体显然也重复了,因为两个项目都使用相同的数据库。
有没有办法制作某种 class 库(也许是第三个项目?)并将所有通用代码放在那里?如果这确实可行,那么您如何更改每个项目,以便他们仍然可以访问此代码,就好像它是他们的一部分一样?我正在考虑将我所有的存储库、服务和实体都放在那里以避免代码重复并大大降低出错的风险。
谢谢!
我在这个答案中假设您的项目相互关联
您可以在一个 Spring
项目中设置多个 properties
,在多个 属性 文件的帮助下,您可以在其中存储数据库连接参数等。
例如:
application-web.properties
application-backend.properties
您可以在您的项目中使用它们,方法是激活每个应用程序所需的属性文件。在这些情况下,配置文件名称将是 web
和 backend
。
当使用maven时,这是我使用的命令行:
mvn spring-boot:run -Drun.profiles=<<profile>>
现在,回到您的 java 代码。
如果 类 只有一个应用程序正在使用,您可以通过 'profile' 指定。示例:
@Controller
@Profile({ "web" })
public class WebEndpoint {
}
这样您就可以使共享代码可用于两个应用程序,而无需复制大部分代码。
将 Repository
和 Service
class 分开到一个子模块。
结构如下:
-- your app
-- api (dependent on `common` module)
-- webapp (dependent on `common` module)
-- common
那么问题是在公共模块中初始化bean。据我所知,您有两个选择:
- 在
api
或webapp
模块的@Configuration
class中,将common
模块的基础包添加到组件扫描包
在api
或webapp
资源文件夹中,添加Spring配置工厂
/src/main/resources/META-INF/spring.工厂
org.springframework.boot.autoconfigure.EnableAutoConfiguration=your.path.AutoConfiguration
在AutoConfiguration
class
中定义service/repository@Bean
我正在处理 2 个项目,一个 Web 应用程序 (Spring MVC) 和一个独立的后端服务应用程序 (Spring boot),它们会大量交互。我对两者都使用休眠,并且它们都使用 Netbeans IDE 进行编码。
我的 "issue" 是我最终在两个项目中都有重复的代码,主要是在存储库和服务层。我的实体显然也重复了,因为两个项目都使用相同的数据库。
有没有办法制作某种 class 库(也许是第三个项目?)并将所有通用代码放在那里?如果这确实可行,那么您如何更改每个项目,以便他们仍然可以访问此代码,就好像它是他们的一部分一样?我正在考虑将我所有的存储库、服务和实体都放在那里以避免代码重复并大大降低出错的风险。
谢谢!
我在这个答案中假设您的项目相互关联
您可以在一个 Spring
项目中设置多个 properties
,在多个 属性 文件的帮助下,您可以在其中存储数据库连接参数等。
例如:
application-web.properties
application-backend.properties
您可以在您的项目中使用它们,方法是激活每个应用程序所需的属性文件。在这些情况下,配置文件名称将是 web
和 backend
。
当使用maven时,这是我使用的命令行:
mvn spring-boot:run -Drun.profiles=<<profile>>
现在,回到您的 java 代码。 如果 类 只有一个应用程序正在使用,您可以通过 'profile' 指定。示例:
@Controller
@Profile({ "web" })
public class WebEndpoint {
}
这样您就可以使共享代码可用于两个应用程序,而无需复制大部分代码。
将 Repository
和 Service
class 分开到一个子模块。
结构如下:
-- your app
-- api (dependent on `common` module)
-- webapp (dependent on `common` module)
-- common
那么问题是在公共模块中初始化bean。据我所知,您有两个选择:
- 在
api
或webapp
模块的@Configuration
class中,将common
模块的基础包添加到组件扫描包 在
api
或webapp
资源文件夹中,添加Spring配置工厂 /src/main/resources/META-INF/spring.工厂 org.springframework.boot.autoconfigure.EnableAutoConfiguration=your.path.AutoConfiguration在
AutoConfiguration
class 中定义service/repository
@Bean