【问题标题】:Spring application URL in scheduled job计划作业中的 Spring 应用程序 URL
【发布时间】:2013-08-03 07:10:22
【问题描述】:

是否可以在春季计划作业(@Scheduled 注释)中获取应用程序 URL? 我想创建一个工作,它将带有 URL 的电子邮件发送到应用程序上的特定页面,比如http://localhost:8080/appName/some/specific/url。问题是http://localhost:8080/ 部分在每个环境(本地、开发、生产等)中会有所不同。

有什么简单的方法可以在spring调度器执行的服务器端方法中获取基本URL?

【问题讨论】:

    标签: java spring spring-scheduled


    【解决方案1】:

    我使用属性文件来做到这一点。 This tutorial 告诉你怎么做。

    唯一复杂的部分是您需要一种方法来更改属性文件为每个不同环境引用的值。

    【讨论】:

      【解决方案2】:

      没有直接的方法可以在您的调度程序中获取基本 url。您可能需要查看解决方法,例如

      1. 使用属性文件存储每个环境的 url

      2. 有一个实现ServletContextAware 的配置bean。初始化 Web 上下文时会自动通知此 bean。

        公共类 AppConfig 实现 ServletContextAware{

            private String baseUrl;
        
            public String getBaseUrl(){ 
                   return baseUrl; 
            }
        
            public void setServletContext(ServletContext servletContext){
                this.baseUrl=servletContext.getRealPath("/");
            }
        }
        

      【讨论】:

      • 这个返回给我磁盘上的真实路径,例如 /data/home/workspace/tomcat/webapps/..... 所以我认为这不是我要找的东西跨度>
      猜你喜欢
      • 2019-08-16
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多