文章目录
1、启动类中的内容
a、SpringBootServletInitializer 和 WebApplicationInitializer 的理解
- 现在JavaConfig配置方式在逐步取代xml配置方式。而WebApplicationInitializer可以看做是Web.xml的替代,它是一个接口。
- 在项目加载web项目的时候回加载这个接口的实现类。
- 对于WebApplicationInitializer的理解
b、ConfigurableApplicationContext
-
此接口结合了所有ApplicationContext需要实现的接口,因此大多数的ApplicationContext都要实现此接口。
-
它在ApplicationContext的基础上增加了一系列配置应用上下文的功能。一系列 配置具体参考
配置应用上下文和控制应用上下文生命周期的方法在此接口中被封装起来,以免客户端程序直接使用。
c、ApplicationContext
-
可以通过ApplicationContext的getBean()方法获取Spring容器中已经初始化的Bean.
-
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()获取
d、Thread 的 setDaemon(Boolean b)方法
- Thread.setDaemon(boolean on):设置为守护线程或者用户线程。
- 通过Thread.setDaemon(false)设置为用户线程,用于为系统中的其它对象和线程提供服务;通过Thread.setDaemon(true)设置为守护线程,在没有用户线程可服务时会自动离开;如果不设置此属性,默认为用户线程。
- .setDaemon需要在start方法调用之前使用
- 用Thread.isDaemon()来返回是否是守护线程
- 如果jvm中都是守护进程,当前jvm将退出。
- setDaemon()详细解释参考
e、System.setProperty()方法 —> Spring Boot 属性文件配置
-
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} : 初步猜想应该是用户主目录。–> 猜想正确。
-