You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringApplication.run()方法执行流程是怎样的?微服务改AWS Lambda需替换哪些逻辑

Spring Boot SpringApplication.run()执行流程说明
  • 启动环境判定:首先识别当前应用类型,你提供的示例属于Servlet栈Web应用,会初始化对应的Servlet应用上下文,同时加载所有预置的上下文初始化器、应用监听器,解析命令行参数作为配置源。
  • 配置类注册:将传入的AccountsServer.class作为主配置类注册到Spring上下文,Spring会自动扫描该类所在包及子包下的所有Spring注解类(@Component、@Service、@Repository、@RestController等),实例化后存入IoC容器,你代码中@Autowired注入AccountRepository的操作就是在这个阶段完成的。
  • 配置加载:读取你代码中指定的accounts-server配置文件,同时加载系统属性、环境变量等所有配置源,完成Bean的属性注入。
  • Web容器启动:对于Servlet栈应用,上下文初始化完成后会启动嵌入式Tomcat,注册所有Controller接口路由,监听配置端口,之后发布应用启动完成事件,触发服务注册到Eureka等后置逻辑,应用进入常驻运行状态接收请求。
迁移AWS Lambda的改造参考
  • 原有Spring Boot应用是常驻进程模式,依赖嵌入式Tomcat处理HTTP请求,Lambda是事件驱动的按需执行模式,不需要启动嵌入式Web容器,你画类图时可以直接去掉Tomcat相关、Eureka服务注册相关的依赖模块。
  • 不需要完全重写现有业务逻辑,可通过Spring Cloud Function适配AWS Lambda,复用现有Service、Repository层的Bean,仅需替换Controller层的HTTP入口为Lambda的事件处理入口即可。
  • 原有主类的SpringApplication.run()启动逻辑可以替换为Spring Cloud Function AWS适配器的启动逻辑,或者直接实现Lambda的RequestHandler接口作为函数入口,不需要维持常驻进程。

你提供的示例代码如下:

public class AccountsServer {

    @Autowired
    protected AccountRepository accountRepository;

    protected Logger logger = Logger.getLogger(AccountsServer.class.getName());

    /**
     * Run the application using Spring Boot and an embedded servlet engine.
     * 
     * @param args Program arguments - ignored.
     */
    public static void main(String[] args) {
        // Default to registration server on localhost
        if (System.getProperty(RegistrationServer.REGISTRATION_SERVER_HOSTNAME) == null)
            System.setProperty(RegistrationServer.REGISTRATION_SERVER_HOSTNAME, "localhost");

        // Tell server to look for accounts-server.properties or
        // accounts-server.yml
        System.setProperty("spring.config.name", "accounts-server");

        SpringApplication.run(AccountsServer.class, args);
    }
}

内容的提问来源于stack exchange,提问作者geare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:57:03