SpringBoot应用(三)---细节整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hurricane_li/article/details/79845501

springboot扩展点:
·ApplicationInitializer是在spring执行refresh之前的回调   
1.context.add 2.配置项context.initializer.classes 3.spring.factories配置,用于jar包中的配置起作用


·commandLineRunner(与applicationRunner的区别在于applicationRunner的参数经过springboot封装)是在容器启动成功后最后一步回调  @Order可以指定执行顺序,先执行order值较小的




·applicationArguments获取程序参数,可以解析--name value与--name value




·classpath下添加banner.txt可以指定spring输出图标,app.setBannerMode可以关闭spring输出banner,或控制banner输出位置,banner.location指定banner.txt文件路径,banner.charset指定banner编码默认UTF-8
spring的banner支持图片的输出,支持png,jpg,gif格式 banner.img.location指定文件位置(全文件名),默认banner.[jpg|png|gif]




·EL表达式指定默认值${name:defalutValue}


springboot启动流程:
1.判断是否是web环境
2.加载所有classpath下面的META-INF/spring.factories ApplicationContextInitializer
3.加载所有classpath下面的META-INF/spring.factories ApplicationListener
4.推断main方法所在的类
5.开始执行run方法
6.设置java.awt.headless系统变量
7.加载所有classpath下面的META-INF/spring.factories SpringApplicationRunListener
8.执行所有的SpringApplicationRunListener的started方法
9.实例化ApplicationArguments对象
10.创建environment
11.配置environment,主要是把run方法的参数配置到environment中
12.执行所有的SpringApplicationRunListener的environmentPrepared方法
13.如果不是web环境,但是是web的environment,则把这个web的environment转换为标准的environment
14.打印banner
15.初始化applicationContext,如果是web环境,则实例化AnnotationConfigEmbeddedWebApplicationContext对象,否则实例化AnnotationConfigApplicationContext对象非
16.如果beanNameGenerator不为空,就把beanNameGenerator对象注入到context里面去
17.回调所有的SpringApplicationContextInitializer方法
18.执行所有的SpringApplicationRunListener的contextPrepared方法
19.一次网spring容器中注入:ApplicationArguments,Banner实例
20.加载所有的源到context里面去
21.执行所有的SpringApplicationRunListener的contextLoaded方法
22.执行context的refresh方法,并且调用context的registerShutdownHook方法
23.回调,获取容器中所有的ApplicationRunner、CommandLineRunner接口,然后排序,依次调用
24.执行所有的SpringApplicationRunListener的finished方法






spring.mvc.view.prefix=/web-inf/jsp/
spring.mvc.view.suffix=.jsp


springboot默认不支持jsp,需要添加Tomcat-embed-japser的jar包












代理模式为什么既要继承被代理的对象所属的类,
又要有一个被代理的实例的引用呢?
继承是为了满足java编程的原则,若不继承则原有代码使用instanceof的地方就会出错,
实例的引用是aop的需要。


project.build.sourceEncoding UTF-8
maven.compiler.source 1.8
maven.compiler.target 1.8

 * 获取配置文件的两种方法:
 * 默认的配置文件名为application.properties
 * 默认的位置为编译路径(classpath)下
 * 默认的文件名可以用--spring.config.name来指定,只是指定名字(不能带文件扩展名)--spring.config.name=myconf 
 * 指定带路径的配置文件可以使用--spring.config.location=conf/myconf/myconfig.properties
 * 多个配置文件用逗号隔开,同一个配置后面的覆盖前面的:--spring.config.location=classpath:/myconf.properties,conf/myconf/myconfig.properties
 * 程序参数配置优先于@PropertySource注解
 * 注解@PropertySource可以连续配置多个,同一配置后面的覆盖前面的,优先使用application.properties的配置
 * 使用注解@PropertySources也可指定多个
 * 支持注入数组、list,在properties文件中使用name[index]=value的格式即可
 * --spring.profiles.active=dep可以用来指定激活哪一套配置文件,与哪一套bean被spring管理,可以指定多个值,用逗号分隔
 *

猜你喜欢

转载自blog.csdn.net/hurricane_li/article/details/79845501