[英]How to share Repository and Service classes between 2 projects
我正在研究2个项目,一个Web应用程序(Spring MVC)和一个独立的后端服务应用程序(Spring Boot),这些项目之间相互影响很大。 我对两者都使用了休眠,它们都使用Netbeans IDE进行了编码。
我的“问题”是我最终在两个项目中都得到重复的代码,主要是在存储库和服务层。 由于两个项目都使用相同的数据库,因此我的实体显然也被复制了。
有没有办法制作某种类库(也许是第三个项目?)并将所有通用代码放入其中? 如果确实可行,那么您如何更改每个项目,以便他们仍然可以像访问代码一样将其访问? 我当时正在考虑将我所有的存储库,服务和实体放在其中,以避免代码重复并大大降低出错的风险。
谢谢!
将那些Repository
和Service
类分离到一个子模块。
结构如下:
-- your app
-- api (dependent on `common` module)
-- webapp (dependent on `common` module)
-- common
然后问题是初始化通用模块中的bean。 AFAIK,您有两个选择:
api
或webapp
模块的@Configuration
类中,将common
模块的基本程序包添加到组件扫描程序包中 在api
或webapp
资源文件夹中,添加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
通过激活每个应用程序所需的属性文件,可以在项目中使用它们。 在这种情况下,配置文件名称将是web
和backend
。
使用Maven时,这是我正在使用的命令行:
mvn spring-boot:run -Drun.profiles=<<profile>>
现在,回到您的Java代码。 如果只有您的应用程序正在使用的类,则可以通过“配置文件”进行指定。 例:
@Controller
@Profile({ "web" })
public class WebEndpoint {
}
这样,您可以使共享的代码可用于两个应用程序,而无需重复大多数代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.