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