SpringBoot使用log4j2的POM依赖顺序要求
POM使用exclusions标签排除多个依赖包的同一个依赖时,需要注意pom依赖的顺序问题(当然也可以每个都进行排除)。
以下为SpringBoot相关的依赖:
运行后控制台结果如下:
当我调整了pom中Spring的依赖顺序后如下(其余保持完全不变):
再次启动应用时,控制台打印如下:
现象 :经过依赖分析,确实日志冲突了( spring-boot-starter-jdbc 、 spring-boot-starter-thymeleaf )
疑问 :难道pom的依赖还有顺序的要求?
经过反复验证,发现当MAVEN使用exclusions标签时,需要在依赖的第一个包进行排除,如下:
Spring Bean 的注册和注入的几种常用方式和区别
我们一般在项目开发中都是使用这种方式。
一般导入第三方组件的时候使用,如注册一个 RedisTemplate :
一般快速导入一批组件时使用,如同时注册好几个动物类:
容器中的Bean:
只有动物园里面有 猫和狗的时候我么才将猪注入进去。ImportBeanDefinitionRegistrar注册器,在注册bean的过程中会在最后执行。
输出结果:
以下是他们在实现依赖注入时执行顺序的概括:
@Autowired and @Inject
@Resource
spring-boot-student-spring 工程
为监控而生的多级缓存框架 layering-cache 这是我开源的一个多级缓存框架的实现,如果有兴趣可以看一下
SpringBoot的配置加载顺序是什么?
1. 开启 DevTools 时, ~/.spring-boot-devtools.properties
2. 测试类上的 @TestPropertySource 注解
3. @SpringBootTest#properties 属性
4. **==命令?参数(--server.port=9000 )==**
5. SPRING_APPLICATION_JSON 中的属性
6. ServletConfig 初始化参数
7. ServletContext 初始化参数
8. java:comp/env 中的 JNDI 属性
9. System.getProperties()
10. **操作系统环境变量**
11. random.* 涉及到的 RandomValuePropertySource
12. **jar 包外部的 application-{profile}.properties 或 .yml**
13. **jar 包内部的 application-{profile}.properties 或 .yml**
14. **jar 包外部的 application.properties 或 .yml**
15. **jar 包内部的 application.properties 或 .yml**
16. **@Configuration 类上的 @PropertySource**
17. SpringApplication.setDefaultProperties() 设置的默认属性
看到这么多,是不是懵逼了,感觉完全记不住,就去黑马程序员官网视频库看免费视频。
spring boot importsource怎么设置加载顺序
Spring Boot 所提供的配置优先级顺序比较复杂。按照优先级从高到低的顺序,具体的列表如下所示。
命令行参数。
通过 System.getProperties() 获取的 Java 系统参数。
操作系统环境变量。
从 java:comp/env 得到的 JNDI 属性。
通过 RandomValuePropertySource 生成的“random.*”属性。
应用 Jar 文件之外的属性文件。(通过spring.config.location参数)
应用 Jar 文件内部的属性文件。
在应用配置 Java 类(包含“@Configuration”注解的 Java 类)中通过“@PropertySource”注解声明的属性文件。
通过“SpringApplication.setDefaultProperties”声明的默认属性。
Spring 可以 利用@Order控制配置类的加载顺序
springBoot的类加载顺序是怎样的呢
Tomcat的class加载的优先顺序一览
1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。
2.环境变量CLASSPATH中的jar和class文件。
3.$CATALINA_HOME/common/classes下的class文件。
4.$CATALINA_HOME/commons/endorsed下的jar文件。
5.$CATALINA_HOME/commons/i18n下的jar文件。
6.$CATALINA_HOME/common/lib 下的jar文件。