当前位置: 首页 > 面试题库 >

如何使用application.properties文件上的动态端点打包springboot应用程序

张成济
2023-03-14
问题内容

我有1个Spring
Boot应用程序。在此应用程序中,我已将1个电子商务系统配置为弹性路径(在application.properties文件中配置弹性路径的终点网址)。现在,我必须将我的spring
boot应用程序交给其他一些人。它将部署在tomcat服务器上。我不想提供源代码。因此,我可以制作战争文件,但现在的问题是,他们拥有自己的弹性路径电子商务,并且他们想配置自己的电子商务。

我想外部化一些将覆盖现有属性的属性。

我的springboot应用程序有2个模块:1)具有elasticpath-
application.properties的elasticpath模块2)salesforce-salesforce-
application.properties

现在,我必须外部化“ C:\ apache-tomcat-8.5.29 \ conf \ ep-
external.properties”文件,该文件将覆盖现有属性。现在的问题是@PropertySource正在加载到最后一个位置。因此,我的外部文件无法覆盖该属性。

@SpringBootApplication
@PropertySource(value = {"classpath:application.properties", "classpath:elasticpath-application.properties", "classpath:salesforce-application.properties")
public class SpringBootDemo extends SpringBootServletInitializer implements CommandLineRunner {
private static final Logger LOG = LoggerFactory.getLogger(SpringBootDemo.class);
    private ServletContext servletContext;

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        //application = application.properties("file:C:\\apache-tomcat-8.5.29\\conf\\ep-external.properties");
        return application.sources(SpringBootDemo.class);
    }

    @Override
       public void onStartup(ServletContext servletContext) throws ServletException {
           this.servletContext = servletContext;
           super.onStartup(servletContext);
       }

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemo.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
    }

}

问题答案:

是的,绝对有可能。基本上,您需要按需更改属性值而无需更改jar / war

为jar传递命令行args
将spring boot应用程序打包为jar并将外部application.properties文件放在任何位置,并与命令行参数传递相同的位置如下 :

 java -jar app.jar --spring.config.location=file:<property_file_location>

这将获取外部属性。

为战争传递命令行/动态参数
1.如下扩展SpringBootServletInitializer

@SpringBootApplication
class DemoApp extends SpringBootServletInitializer {
    private ServletContext servletContext;
    public static void main(String[] args){SpringApplication.run(DemoApp.class,args);}
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        builder = builder.properties("test.property:${test_property:defaultValue}");
        return builder.sources(DemoApp.class)
   }
   @Override
   public void onStartup(ServletContext servletContext) throws ServletException {
       this.servletContext = servletContext;
       super.onStartup(servletContext);
   }
}
  1. 像往常一样访问该属性,如下所示:

@Value(“ $ {test.property}”)

  1. 在启动tomcat之前,请设置名为 test_property的环境 变量。而已

另外:

如果您想提供完整的文件作为外部文件,也可以传递如下所示的属性。

.properties("spring.config.location:${config:null}")

有关外部化配置的进一步阅读:https :
//docs.spring.io/spring-boot/docs/current/reference/html/boot-features-
external-config.html



 类似资料:
  • 问题内容: 我的应用程序将PDF打印到一个临时文件。如何使用Python中的默认应用程序打开该文件? 我需要一个解决方案 window Linux(如果没有更通用的功能,则使用带有Xfce的Ubuntu)。 问题答案: os.startfile暂时仅适用于Windows,但是xdg- open 将在运行X的任何UNIX客户端上可用。

  • 问题内容: 我在业余时间正在编写django应用程序,以参加我们正在开展的艰巨竞赛。我认为我会明智地使用这段时间,并加快使用virtualenv,pip,打包,django 1.3以及如何编写易于重新分发的应用程序的速度。到现在为止还挺好。 我要负责包装部分。例如,GitHub上的许多django应用程序大多数都(大致)以相同的方式捆绑在一起。我将以django-uni-forms为例。 我所做的

  • Fof简单方便,这里引用我的代码。 第一个类,学生(存储在db中的实体): 接口,StudentDAO(用于DAO逻辑): 最后一个类,MainApp(运行应用程序): 最后,配置数据库连接的Beans文件: 该教程非常清楚,如果我尝试它,将会有一个完美的执行,没有错误,MySQL Db被正确地更新。 spring.datasource.driver-class-name=com.mysql.jd

  • 我正在尝试在我的Spring Boot(1.2.0.m1)应用程序中设置HikariCP,这样我就可以使用它来代替Tomcat DBCP进行测试。我想在application.properties文件中配置连接池,就像使用Tomcat一样,但我不知道应该怎么做。我找到的所有示例都显示JavaConfig样式,或者使用单独的HikariCP属性文件。有人能帮我找出属性名称来在application.

  • 为了在bash和fish中创建更简单的别名,我编写了两个初学者函数。我尝试了两种捕获文件参数的方法,如上图所示。他们两个都不工作。相反,我收到了以下消息。 说我正在打开文件。在nteractstarted.ipynb。 这将显示在我的控制台中,并打开带有空笔记本的默认Interact实例。记事本和其他文件也是如此。 在这里插入一条抱怨,与Linux shell相比,让此功能正常工作是多么令人困惑。

  • 问题内容: 因此,我正在考虑在使用OpenCV的应用程序的开发中使用哪种语言。作为我决定的一部分,我想知道在最终应用程序中包含opencv库有多么容易/困难。我真的很想用python写这个,因为opencv绑定很棒,python很容易等等。 但是我还没有找到明确的答案,例如“当py2app看到导入cv行时会自动捆绑opencv”(我认为不是),如果没有,那么有一种已知的方法吗? 总的来说,我想知道

  • 问题内容: 我正在尝试在我的Spring Boot(1.2.0.M1)应用程序中设置HikariCP,以便可以测试使用它来代替Tomcat DBCP。我想像在使用Tomcat一样在我的application.properties文件中配置连接池,但是我不知道该怎么做。我发现的所有示例都显示JavaConfig样式,或使用单独的HikariCP属性文件。有人可以帮我找出属性名称以在applicati