springboot 中启动类SpringApplication.run报错(红线)

本文提供了解决SpringBoot项目中启动类SpringApplication.run报错的两种方案,包括清理本地仓库和重新引入项目的方法,适用于使用IDEA的开发者。
springboot 中启动类SpringApplication.run报错(红线)

方案一:

1.在项目的根目录下执行:mvn dependency:purge-local-repository

2.执行:mvn clean 或 mvn clean package -U -X -e

方案二:

如果是idea,重新引入项目,估计是把他搞坏了,引入项目的时候一定要选择项目根目录下的pom.xml,而且弹框的时候一定要选择一个新的项目(大致翻译的意思是重新建一个新的项目)

在Spring Boot应用的启动类中,通常主方法(main method)会调用`SpringApplication.run()`来启动整个应用程序。许多开发者可能会尝试在`SpringApplication.run()`之后编写额外的代码,并期望这些代码在应用启动后执行。然而,实际上这些代码并不会被执行,原因如下: `SpringApplication.run()`方法本身会启动一个嵌入式的Web容器(如Tomcat、Jetty等),并阻塞当前主线程以保持应用运行[^1]。这意味着一旦调用了该方法,主线程将一直等待,直到应用被关闭,因此`run()`方法之后的代码不会有机会执行。 如果需要在Spring Boot应用启动完成后执行某些初始化逻辑,可以采用以下几种方式: ### 1. 使用 `CommandLineRunner` 或 `ApplicationRunner` 这两个接口允许定义在Spring Boot应用启动后自动执行的任务。它们的区别在于`CommandLineRunner`接收原始的字符串参数,而`ApplicationRunner`接收封装好的`ApplicationArguments`对象。 ```java import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class MyStartupRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { // 在这里编写启动后要执行的代码 System.out.println("Application started successfully!"); } } ``` ### 2. 使用 `@PostConstruct` 注解 可以在某个Bean的方法上使用此注解,表示该方法应在Bean初始化完成后执行。需要注意的是,这种方式适用于单个Bean的初始化逻辑,而不是全局的应用启动后操作。 ```java import javax.annotation.PostConstruct; @Component public class MyComponent { @PostConstruct public void init() { // Bean初始化完成后执行 System.out.println("Bean initialized."); } } ``` ### 3. 监听 `ApplicationReadyEvent` 通过监听Spring Boot提供的事件机制,可以在应用完全启动后执行特定逻辑。 ```java import org.springframework.context.event.EventListener; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.stereotype.Component; @Component public class AppStartupRunner { @EventListener(ApplicationReadyEvent.class) public void onApplicationReady() { // 应用启动完成后执行 System.out.println("Application is ready to serve requests."); } } ``` 以上方法都可以有效替代直接在`SpringApplication.run()`之后编写代码的做法,确保相关逻辑能够在Spring Boot应用启动完成后正确执行。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值