我没有理解正确使用@Componenet,@ Configuration,@ Bean注释。 我想每60秒运行一个方法。请检查以下代码。如果我不给@Component注释,那么它就不会运行。那么在这种情况下@Component的用途是什么?
MyPolls
答案 0 :(得分:0)
这段代码有几个问题:
@SpringBootApplication
(或@EnableAutoConfiguration
)。因此,自动配置根本不会启动(Spring Boot将启动您的应用程序,但除了基本的东西,如env准备等,它将不会对它做任何事情)。在某些情况下它完全没问题,但这可能不是你想要的所以回答你的问题:SchedulingProjectApplication
是你应用的根源,但它只是一个简单的POJO。没有任何东西可以指示容器处理它。通常应用程序是@Configuration
(您可以使用其中一个@EnableXYZ
,您可以定义其他bean等。
如果您在课程中添加@SpringBootApplication
,它会扫描您应用的相同包中的所有@Component
(以及所有子包)。
有关代码结构in the documentation
的更多详细信息一个基本/简单的结构是:
package com.example.foo;
@SpringBootApplication
@EnableScheduling
public class SchedulingProjectApplication {
public static void main(String[] args) {
SpringApplication.run(SchedulingProjectApplication.class, args);
}
}
和
package com.example.foo;
@Component
public class SchedulingLogger {
private static final Logger log =
LoggerFactory.getLogger(SchedulingLogger.class);
@Scheduled(fixedDelay = 6000)
public void r()
{
log.info("Start- main-job");
log.info("stop-main-job");
}
}
关于配置,您应该注意其他一些事项(例如moving decisions outside of your @SpringBootApplication
if you use slicing)。