spring boot 启动打开网页

这段代码展示了如何通过Spring Boot启动应用程序,并获取服务器端口。然后利用Runtime类执行命令,打开一个本地URL,该URL指向的是`/table/errorInfo`路径。这可能是一个错误处理或信息展示页面。

代码如下:

public static void main(String[] args) throws IOException, SQLException {
    ConfigurableApplicationContext application = SpringApplication.run(ServiceApplication.class, args);
    String port = application.getEnvironment().getProperty("server.port");
    Runtime runtime = Runtime.getRuntime();
    runtime.exec("rundll32 url.dll,FileProtocolHandler "+"http://localhost:"+port+"/table/errorInfo");

}
### Spring Boot 应用程序的启动顺序详解 Spring Boot启动过程是一个高度自动化的过程,主要依赖于其核心组件 `SpringApplication` 和一系列内置机制来简化开发者的配置负担。以下是详细的启动顺序解析: #### 1. 主类与入口方法 Spring Boot 应用程序通常由一个主类开始,该类包含 `main` 方法,并使用 `@SpringBootApplication` 注解标记[^3]。此注解实际上是一个组合注解,包含了以下几个重要部分: - `@SpringBootConfiguration`: 将当前类声明为一个配置类。 - `@EnableAutoConfiguration`: 开启自动配置功能。 - `@ComponentScan`: 执行组件扫描,默认情况下会在当前包及其子包中查找标注了特定注解(如 `@Service`, `@Controller` 等)的类。 ```java @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` #### 2. 创建 `SpringApplication` 实例 在调用 `SpringApplication.run()` 方法时,首先会创建一个 `SpringApplication` 对象。在此过程中,Spring Boot 会执行以下操作: - **初始化监听器**: 加载所有实现了 `ApplicationListener` 接口的监听器,以便在整个生命周期内捕获事件。 - **设置默认属性**: 如果未显式指定,则会加载一组默认的 Spring Boot 属性。 - **验证主类的存在性**: 确保传入的主类有效且适合作为上下文的基础。 #### 3. 调整运行环境 随后,`SpringApplication` 会根据传递的参数调整运行环境。这一阶段涉及的主要任务包括: - 解析命令行参数并将其注入到环境中。 - 根据不同的操作系统或部署条件选择合适的 Web 容器(例如 Tomcat、Jetty 或 Undertow)。 #### 4. 准备应用上下文 接着,Spring Boot 会准备应用上下文 (`ApplicationContext`) 并注册必要的 BeanFactoryPostProcessors 和 BeanPostProcessors。这是整个框架的核心之一,因为所有的 Spring 组件和服务都将在这里被管理和协调。 #### 5. 自动配置 自动配置是 Spring Boot 的一大亮点,也是最复杂的环节之一。它通过以下步骤实现: - **加载元数据**: Spring Boot 会读取位于 `META-INF/spring.factories` 文件中的配置信息,找到所有符合条件的候选者。 - **匹配条件**: 每个自动配置类都会附带一些预设条件(Condition)。只有当这些条件全部满足时,对应的配置才会生效。 - **优先级排序**: 多个可能冲突的配置会被按照一定的优先级规则进行筛选,最终只保留最适合的那个版本。 #### 6. 发布事件 随着上下文逐渐成熟,Spring Boot 不断发布各种事件以通知其他模块当前的状态进展。典型的时间序列包括但不限于: - `ApplicationStartingEvent` - `ApplicationEnvironmentPreparedEvent` - `ApplicationPreparedEvent` - `ApplicationStartedEvent` - `ApplicationReadyEvent` #### 7. 启动嵌入式容器(如果有) 对于基于 Servlet 的 Web 应用而言,Spring Boot 还会尝试启动一个嵌入式的 HTTP 服务器。此时,所有的控制器映射路径均已完成绑定,服务端口也已被打开等待请求到来。 #### 8. 上下文刷新与后期处理 最后一步是对整个上下文做进一步的清理和完善工作,主要包括: - 初始化剩余尚未激活的单例 Beans。 - 触发任何挂起的任务调度或者异步作业。 - 输出日志消息确认系统已正常上线运作。 --- ### 示例代码片段 下面展示了一个典型的 Spring Boot 启动类定义方式: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 此外,为了更好地理解自动配置的作用范围,可以查阅项目的 `pom.xml` 或 `build.gradle` 文件,观察引入了哪些 Starter POMs/Plugins,它们决定了具体有哪些特性得到了开启支持[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值