是否可以在春季计划作业(@Scheduled 注释)中获取应用程序 URL?我想创建一个作业,将带有 URL 的电子邮件发送到应用程序上的特定页面,比如说在http://localhost:8080/appName/some/specific/url
. 问题是部件http://localhost:8080/
在每个环境(本地、开发、生产等)中都会有所不同。
是否有任何简单的方法可以在由 spring 调度程序执行的服务器端方法中获取基本 URL?
是否可以在春季计划作业(@Scheduled 注释)中获取应用程序 URL?我想创建一个作业,将带有 URL 的电子邮件发送到应用程序上的特定页面,比如说在http://localhost:8080/appName/some/specific/url
. 问题是部件http://localhost:8080/
在每个环境(本地、开发、生产等)中都会有所不同。
是否有任何简单的方法可以在由 spring 调度程序执行的服务器端方法中获取基本 URL?
我使用属性文件来做到这一点。本教程告诉你如何做到这一点。
唯一复杂的部分是您需要一种方法来更改属性文件为每个不同环境引用的值。
没有直接的方法可以在您的调度程序中获取基本 url。您可能想查看解决方法,例如
使用属性文件存储每个环境的 url
有一个实现ServletContextAware的配置 bean 。初始化 Web 上下文时,将自动通知该 bean。
公共类 AppConfig 实现 ServletContextAware{
private String baseUrl;
public String getBaseUrl(){
return baseUrl;
}
public void setServletContext(ServletContext servletContext){
this.baseUrl=servletContext.getRealPath("/");
}
}