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

如何不使用@SpringBootApplication注解启动Spring Boot项目?

不用@SpringBootApplication启动Spring Boot项目的可行方案

@SpringBootApplication本质是三个核心注解的组合:@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。要替代它启动你的项目,有两种直接满足要求的方案,全程只需要Java类,不需要XML、webapp或HTML文件:

方案一:用核心注解组合替代

直接在启动类上标注这三个注解,效果和@SpringBootApplication完全一致,是最常用的替代方式:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.annotation.SpringBootConfiguration;
import org.springframework.context.annotation.ComponentScan;

@SpringBootConfiguration // 等价于@Configuration,标记这是Spring Boot的配置类
@EnableAutoConfiguration // 开启Spring Boot的自动装配逻辑,保持原项目的自动配置能力
@ComponentScan(basePackages = "com.your.project.root") // 指定扫描你项目的根包,确保entities、repositories、services、controllers都被覆盖
public class CustomBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(CustomBootApplication.class, args);
    }
}

注意把com.your.project.root替换成你实际的项目根包路径,比如如果你的实体类在com.example.entity,控制器在com.example.controller,根包就是com.example。

方案二:纯Java代码手动启动(无注解)

如果想要完全脱离注解,也可以通过代码手动构建Spring Boot的应用上下文:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import java.util.List;

public class ManualBootApplication {
    public static void main(String[] args) {
        // 初始化Spring应用实例
        SpringApplication app = new SpringApplication();

        // 配置自动装配的基础包,对应@EnableAutoConfiguration的作用
        AutoConfigurationPackages.register(new AnnotationConfigApplicationContext(), "com.your.project.root");

        // 添加组件扫描规则,对应@ComponentScan的作用
        app.addPrimarySources(List.of(
            ComponentScan.class.getDeclaredConstructor(String[].class).newInstance((Object) new String[]{"com.your.project.root"})
        ));

        // 如果有自定义配置类,直接添加到应用源中
        // app.addSources(YourCustomConfig.class);

        // 启动应用
        app.run(args);
    }
}

这种方式完全通过代码控制Spring Boot的启动流程,没有任何注解依赖,同样能加载你所有的业务组件和自动配置。

额外注意事项

  • 无论哪种方案,确保包路径配置正确,否则Spring无法扫描到你的entities、repositories等组件。
  • 如果项目中有数据库连接、第三方服务配置等自定义配置类,只需要将它们加入到Spring的加载源中即可(比如方案二中的app.addSources方法)。
  • 两种方案都能保持原项目的REST接口正常对外提供服务,不需要额外修改业务代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:42:54