预定作业中的Spring应用程序URL

时间:2013-08-02 05:57:08

标签: java spring spring-scheduled

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

有没有简单的方法来获取由spring scheduler执行的服务器端方法中的基本URL?

2 个答案:

答案 0 :(得分:2)

我使用属性文件执行此操作。 This tutorial告诉您如何做到这一点。

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

答案 1 :(得分:0)

没有直接的方法可以在调度程序中获取基本URL。你可能想看看这方面的工作,比如

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

  2. 拥有一个实现ServletContextAware的Configurartion bean。初始化Web上下文时,将自动通知此bean。

    public class AppConfig实现了ServletContextAware {

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