繁体   English   中英

如何在两个项目之间共享存储库和服务类

[英]How to share Repository and Service classes between 2 projects

我正在研究2个项目,一个Web应用程序(Spring MVC)和一个独立的后端服务应用程序(Spring Boot),这些项目之间相互影响很大。 我对两者都使用了休眠,它们都使用Netbeans IDE进行了编码。

我的“问题”是我最终在两个项目中都得到重复的代码,主要是在存储库和服务层。 由于两个项目都使用相同的数据库,因此我的实体显然也被复制了。

有没有办法制作某种类库(也许是第三个项目?)并将所有通用代码放入其中? 如果确实可行,那么您如何更改每个项目,以便他们仍然可以像访问代码一样将其访问? 我当时正在考虑将我所有的存储库,服务和实体放在其中,以避免代码重复并大大降低出错的风险。

谢谢!

将那些RepositoryService类分离到一个子模块。

结构如下:

-- your app
  -- api    (dependent on `common` module)
  -- webapp (dependent on `common` module)
  -- common

然后问题是初始化通用模块中的bean。 AFAIK,您有两个选择:

  1. apiwebapp模块的@Configuration类中,将common模块的基本程序包添加到组件扫描程序包中
  2. apiwebapp资源文件夹中,添加Spring配置工厂/src/main/resources/META-INF/spring.factories org.springframework.boot.autoconfigure.EnableAutoConfiguration = your.path.AutoConfiguration

    AutoConfiguration类中定义服务/存储库@Bean

我假设在这个答案中您的项目相互联系

您可以在一个Spring项目中设置多个properties ,并在多个属性文件的帮助下存储数据库连接参数等。
例如:

application-web.properties

application-backend.properties

通过激活每个应用程序所需的属性文件,可以在项目中使用它们。 在这种情况下,配置文件名称将是webbackend

使用Maven时,这是我正在使用的命令行:

mvn spring-boot:run -Drun.profiles=<<profile>>

现在,回到您的Java代码。 如果只有您的应用程序正在使用的类,则可以通过“配置文件”进行指定。 例:

@Controller

@Profile({ "web" })
public class WebEndpoint {
}

这样,您可以使共享的代码可用于两个应用程序,而无需重复大多数代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM