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

如何在Spring运行时获得一个用@schedule加的方法的cron加值?

梅安平
2023-03-14

我有一个Spring应用程序,它使用

@SpringBootApplication

@EnableScheduling

在主Java中。另外,它还有一个具有几个@Schedured方法的类:

@Component

public class ScheduledTasks {

(...)

@Scheduled(cron = "0 0/5 10-18 ? * *")    
public void doThings() {
(...)
}

@Scheduled(cron = "0 0/22 23 ? * *")    
public void doAnotherThings() {
(...)
}

据我所知,它没有声明任何特殊的线程池、ThreadPoolExecutor或类似的东西。应用程序工作正常,计划的工作运行正常。

我的应用程序在启动时还说“没有找到用于计划处理的taskscheduler/scheduledexecutorservice bean”,所以我认为它使用了默认/简单的方法来运行计划方法,它们工作正常。

我不知道用@configuration类中的那个对象手动创建一个@bean是否合适,也不知道如何用它们填充构造函数。

该信息与计划作业相关联的对象是什么?

在Spring中使用@bean手动创建它是否合适?怎么做?

多谢.

共有1个答案

左丘嘉木
2023-03-14

注释被认为是代码的元数据。您不应该与注释交互--只有提供库应该这样做。但是只是将感兴趣的cron表达式外部化,并在其他地方阅读它。

@Scheduled(cron = "${yourConfiguration.cronExpression}")
someMethod()...

@Value("${yourConfiguration.cronExpression}")
String cronExpression;  // injected for debugging purposes

您还可以获得TaskScheduler并使其列出所有任务,包括所有cron表达式。但这将超出您所讨论的方法的上下文。

 类似资料:
  • 问题内容: 在运行时很容易获得方法, 但是在运行时 如何获得方法? 如以下示例 我们的类,其中包括我们的目标方法 具有主要方法的班级 问题答案: 您不能:该文件不包含注释。 一种“解决方案”是在构建程序时将Javadoc生成为HTML,并从类名和方法名构建URL。您还可以使用doclet API 以比HTML更合适的格式生成javadoc 。

  • 问题内容: 我希望添加一个条目,以每隔30分钟,每小时的零零几点和接近小时的30分钟执行一次脚本。我有以下内容,但它似乎无法在0上运行。 我需要使用什么字符串? cron在OSX上运行。 问题答案: 做:

  • 问题内容: 是否可以使用反射或其他魔术来获取方法的行号? 该方法可能在当前Stacktrace中。使用,可以获取一个的行号。但是,如果我只得到对象,该怎么办? 对于类->如何从java.lang.Class对象获取源文件名/行号,我发现了这一点,但是它对方法没有用。 问题答案: 在进行了一些研究之后,我想做同样的事情。您将需要添加javassist(我使用的是3.15.0-GA版本)。 给定以下类

  • 我是Spring的新手。我有下面的Person bean,其中包含姓名、地址和年龄作为属性。现在我想在我的自定义BeanFactoryPostProcess中向Person bean添加名为性别的新属性。我的人bean实现了属性访问器。 XML配置文件 自定义BeanFactoryPostProcess 人员类别 客户端程序 如果我访问性别我得到null 请让我知道如何动态设置和获取属性。

  • 我正在试用Netflix OSS来实现一个微服务架构。我希望在运行时从bootstrap.yml文件记录以查看哪个实例为请求提供服务。 我使用的是Java8。 重要的库版本为: *spring-boot-starter-web-1.5.8 *spring-boot-starter-tomcat-1.5.8 *tomcat-embedd-core-8.5.23 在浏览了stackoverflow之后

  • 我在XML配置文件中有一些信息(例如log4j2 logs save文件夹的路径),希望在Spring开始加载之前加载它们。但是在Spring和抛出异常之前,都不会执行或(log4j2找不到系统属性,我想在XML配置文件加载期间定义它)。 如何在Spring开始加载之前运行一些方法? 我使用Spring Boot(Start.class作为切入点)。 运行输出: 2014-12-20 14:15: