Spring @EventListener注解提示不允许在此位置报错如何修复?
问题根源
你出现这两个报错的核心原因是把triggerMail方法和@EventListener注解错误定义在了main方法内部,Java语法不允许在方法内部定义带public修饰符、带类级别注解的成员方法。
报错原因说明
- 报错
The annotation @EventListener is disallowed for this location:@EventListener是Spring框架提供的注解,仅允许标注在类的成员方法上,不能作用于另一个方法内部的局部代码,因此当前位置不允许使用该注解。 - 报错
Illegal modifier for parameter triggerMail; only final is permitted:在方法内部定义的局部结构仅允许使用final修饰符,你给方法内部的triggerMail加了public访问修饰符,违反了Java语法规则。
修复方案
将triggerMail方法从main方法中移出,作为SpringEmailClientApplication类的成员方法即可,修复后代码如下:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; @SpringBootApplication public class SpringEmailClientApplication { public static void main(String[] args) { SpringApplication.run(SpringEmailClientApplication.class, args); } //EventListener will be triggered when application is ready @EventListener(ApplicationReadyEvent.class) public void triggerMail() { // 此处编写邮件发送的业务逻辑 } }
内容的提问来源于stack exchange,提问作者Hrishikesh Shinde
相关产品推荐
相关产品推荐

