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

在spring framework中使用多个模块的项目进行配置管理的最佳方法?

阎单鹗
2023-03-14

我有一个类似这样的项目设置:

-common-lib (common lib to included by multiple services)
-event-lib (spring framework 4 (read IOC) library for our event buffer. I want to embed the prod configuration within the app so consumers can use it without configuring it.
-serviceA (depends on event-lib, springboot application)
-serviceB (depends on event-lib, spring framework application)
@Configuration
@ComponentScan(basePackages = "com.*")
@PropertySource("classpath:events-{$spring.profiles.active}.properties")
public class EventConfiguration {

@Inject
private ConfigurableApplicationContext ctx;

@Inject
private Environment environment;

@Value("${events.asset-processing-queue}")
private String assetProcessingEventQueue;
}

理想情况下,我试图找到一个解决方案:

  • 对所需的所有环境属性使用yaml或属性文件的组合
  • 对应该加载的属性有某种智能层次结构。例如。如果我在共享库中指定了一个属性,请尊重它,除非使用者用自己的值重写它。
  • 可以在spring framework 4或spring boot应用程序中工作(我们使用AWS lambda做一些事情,不希望spring boot开销)
  • 只依赖于java注释和平面文件的属性。(最好避免使用XML).

共有1个答案

申浩广
2023-03-14

我们是这样做的:

@PropertySource("classpath:/${env}.config.properties")
public class Application implements RequestHandler<Request, Object> {
    @Override
    public Object handleRequest(Request request, Context awsContext) {

        ExecutionEnvironment env = getEnvironment(awsContext.getFunctionName());

        System.setProperty("env", env.toString());

这尊重环境属性。

 类似资料:
  • springboot多模块项目中,vo,dto应该放在那一层比较合适? 如题,假设项目有如下包 demo-web demo-service demo-dao demo-common vo,dto应该放在那一层比较合适? dao层放mapper和DO(也就是和数据库表对应的类) 是毋庸置疑的。 VO我的理解是返回给前端页面的对象,按理说应该放在web模块比较合适,但是有时候我们可以在dao层直接写个

  • 我有一个问题,为我的多模块maven项目正确设置Spring启动。 有一个模块“api”使用另一个模块“core”。Api有一个应用程序。包含spring的属性文件。邮政主机=xxx。根据Spring Boot文档,这为您提供了JavaMailSender接口的默认实现,可以自动连接。 然而,负责发送电子邮件的类驻留在“核心”包中。当我尝试构建该模块时,构建失败,因为找不到JavaMailSend

  • 我正在学习本教程https://spring.io/guides/gs/multi-module/#scratch 在根目录中,我创建了3个目录:moduleA、moduleB和moduleC 我运行了

  • null client.admin(eclipse-plugin打包) client.admin.test.fragment(eclipse-test-plugin packaging) sonar.junit.reportsPath sonar.jacoco.reportpath, sonar.jacoco.itreportpath sonar.core.codecoveragePlugin s

  • 问题内容: 我正在寻找一种在Oracle 9数据库中执行多行插入的好方法。以下内容在MySQL中有效,但Oracle似乎不支持以下内容。 问题答案: 这在Oracle中有效: 这里要记住的是使用语句。

  • 问题内容: 我正在研究一个多模块Maven项目,其结构如下: war模块取决于jar模块,并将打包后将jar工件添加到webapp的lib目录中。 war模块和jar模块都使用Apache log4j进行日志记录,并共享相同的log4j配置文件(log4j.xml),该文件当前位于jar模块项目中。并且此log4j.xml将打包到jar- module.jar文件中,但是,我想将其放入war包中而