springboot 是如何识别web项目的

之前有朋友问题这样的一个问题
springboot通过main方法是如何启动web系统的,它是如何识别当前系统是不是web项目呢。
今天突然想起来了,翻看了下springboot的代码,在此坐下记录

springboot通过SpringApplication的run方法作为入口启动。

系统启动的时候我们传入的是一个source的object对象。一般是传入springboot在我们系统的启动类
在内部实例化了一个SpringApplication对象并且初始化
在初始化过程中检查当前系统是否是web系统代码如下

private void initialize(Object[] sources) {
        if (sources != null && sources.length > 0) {
            this.sources.addAll(Arrays.asList(sources));
        }
        this.webEnvironment = deduceWebEnvironment();
        setInitializers((Collection) getSpringFactoriesInstances(
                ApplicationContextInitializer.class));
        setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));
        this.mainApplicationClass = deduceMainApplicationClass();
    }
    private boolean deduceWebEnvironment() {
        for (String className : WEB_ENVIRONMENT_CLASSES) {
            if (!ClassUtils.isPresent(className, null)) {
                return false;
            }
        }
        return true;
    }
    private static final String[] WEB_ENVIRONMENT_CLASSES = { "javax.servlet.Servlet",
            "org.springframework.web.context.ConfigurableWebApplicationContext" };

通过以上代码我们可以看到,系统检查是不是存在以上两个接口的实例化对象以推断当前系统是不是web项目

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的Java框架,它可以帮助开发者快速构建独立的、可执行的、生产级别的Spring应用程序。Spring Boot的自动识别是指它能够根据项目的依赖和配置文件的设置,自动识别并配置应用程序的各种组件和功能。 Spring Boot的自动识别主要通过以下几个方面实现: 1. 依赖管理:Spring Boot使用了一种称为“Starter”的依赖管理机制。通过引入不同的Starter依赖,Spring Boot可以自动识别并配置应用程序所需的各种组件和功能,如数据库访问、Web开发、安全性等。 2. 自动配置:Spring Boot提供了大量的自动配置类,这些类会根据项目的依赖和配置文件的设置,自动配置应用程序所需的各种组件和功能。开发者只需要引入相应的Starter依赖,Spring Boot就会根据约定和默认配置来自动完成配置工作。 3. 条件化配置:Spring Boot支持条件化配置,可以根据特定条件来决定是否启用某个组件或功能。开发者可以通过在配置文件中设置条件属性,或者使用注解来标记条件,从而控制Spring Boot的自动识别和配置行为。 4. 外部化配置:Spring Boot支持将应用程序的配置信息外部化,可以通过配置文件、环境变量、命令行参数等方式来配置应用程序。开发者可以根据需要自定义配置文件,并在配置文件中设置相应的属性,Spring Boot会自动读取并应用这些配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值