SpringBoot解读启动类内容(三)

1、启动类中的内容

a、SpringBootServletInitializer 和 WebApplicationInitializer 的理解

  1. 现在JavaConfig配置方式在逐步取代xml配置方式。而WebApplicationInitializer可以看做是Web.xml的替代,它是一个接口。
  2. 在项目加载web项目的时候回加载这个接口的实现类。
  3. 对于WebApplicationInitializer的理解

b、ConfigurableApplicationContext

  1. 此接口结合了所有ApplicationContext需要实现的接口,因此大多数的ApplicationContext都要实现此接口。

  2. 它在ApplicationContext的基础上增加了一系列配置应用上下文的功能。一系列 配置具体参考

    配置应用上下文和控制应用上下文生命周期的方法在此接口中被封装起来,以免客户端程序直接使用。

c、ApplicationContext

  1. 可以通过ApplicationContext的getBean()方法获取Spring容器中已经初始化的Bean.

  2. getBean()方法详解参考

  3. ApplicationArguments

    private static ConfigurableApplicationContext CONTEXT;
    ApplicationArguments args = CONTEXT.getBean(ApplicationArguments.class);
    
            Thread thread = new Thread(() -> {
                CONTEXT.close();
                CONTEXT = SpringApplication.run(Application.class, args.getSourceArgs());
            });
    

    Context通过getBean()方法获取注入的Bean,然后args通过getSourceArgs()获取

  4. SpringApplication详解(run执行启动)

d、Thread 的 setDaemon(Boolean b)方法

  1. Thread.setDaemon(boolean on):设置为守护线程或者用户线程。
  2. 通过Thread.setDaemon(false)设置为用户线程,用于为系统中的其它对象和线程提供服务;通过Thread.setDaemon(true)设置为守护线程,在没有用户线程可服务时会自动离开;如果不设置此属性,默认为用户线程。
  3. .setDaemon需要在start方法调用之前使用
  4. 用Thread.isDaemon()来返回是否是守护线程
  5. 如果jvm中都是守护进程,当前jvm将退出。
  6. setDaemon()详细解释参考

e、System.setProperty()方法 —> Spring Boot 属性文件配置

  1. System.setProperty("spring.config.additional-location", "file:${user.home}/.halo/,file:${user.home}/halo-dev/");
    
    • System.setPropert干什么?

      setProperty (String prop, String value);
      1、 设置指定键对值的系统属性,其中prop:系统属性的名称,value:系统属性的值。注:这里的system,系统指的是 JRE (runtime)system,不是指 OS。
      2、System.setProperty相当于一个静态变量,存在内存里面,可以在项目的任何一个地方,通过System.getProperty(“变量”)来获得

      *** 主要作用, 加载外部配置文件。打包jar运行也不方便修改jar内部数据,通过设置环境变量spring.config.location从外部读取某些会改变的配置。

    • ${user.home} : 初步猜想应该是用户主目录。–> 猜想正确。

  2. 详细有关Spring Boot 属性文件的配置参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值