添加 spring-context 依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context
jar包冲突 Caused by:java.lang.NoSuchMethodError Caused by: java.lang.ClassNotFoundException pom.xml 添加一个spring-context 的jar包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId 例如,现在的pom.xml中关于spring-beans和spring-context顺序是这样的。 现在如果把spring-beans和spring-context顺序调换一下 spring-beans和spring-context的版本就都成4.3.16.RELEASE了。 例如这个项目中直接依赖了spring-context和spring-beans两个jar包,这两个jar包所依赖的spring-core就属于传递依赖包。
defined 049 --> 050 <dependency> 051 <groupId>org.springframework</groupId> 052 <artifactId>spring-context -- 067 Transaction Management Abstraction (depends on spring-core, spring-beans, spring-aop, spring-context -- 078 JDBC Data Access Library (depends on spring-core, spring-beans, spring-context, spring-tx -- 121 Spring MVC for Servlet Environments (depends on spring-core, spring-beans, spring-context -- 131 Spring MVC for Portlet Environments (depends on spring-core, spring-beans, spring-context
在使用maven构建依赖的时候,发现springBoot的版本和导入的依赖版本中的 spring-context 的版本出现冲突。 image.png 要引入的依赖,它所依赖的spring-context版本为3.24 我的springboot 主版本较高2.18 它的spring-context为5.19 因此在被依赖的版本和 true</optional> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context
dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context spring-expression</artifactId> <version>5.3.5</version> </dependency> </dependencies>四个依赖介绍spring-context 上下文,容器spring-beans 创建对象spring-core 核心jarspring-expression 表达式jar但是事实上,我们导入spring-context 的时候,会自动导入其他依赖的jar,自动进行了依赖传递所以,导入一个spring-context 依赖也可以依赖传递关系图如下为了方便测试,我们导入Junit测试依赖<dependency> <groupId
源码构建2 在Spring项目中新增一个自己的module,尝试运行hello world,引入spring-context 依赖:compile(project(":spring-context")) 后来看了spring-context的依赖发现,spring-instrument 在 spring-context 中为 optional 依赖:optional(project(":spring-instrument
:tree 当敲入上述命令时,控制台会出现形如下内容 [INFO] org.example:hello:jar:1.0-SNAPSHOT [INFO] +- org.springframework:spring-context dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context INFO] | \- org.springframework:spring-jcl:jar:5.2.0.RELEASE:compile [INFO] \- org.springframework:spring-context dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context
出现这个问题,首先问自己一个问题:是否在maven依赖中添加了spring-context,如果没有请添加,如果已经添加了那么可以继续往下看了。 今天遇到一个很奇怪的问题,命名在maven pom文件中添加了spring-context依赖,却仍然提示“The import org.springframework.context.support.ClassPathXmlApplicationContext RELEASE.jar时出错; invalid LOC header (bad signature)导致 看到这里就不再兜关子了,出现上面这个问题,一般就是下载的maven包不完全所致,删除本地仓库中的spring-context
dependency:tree 当敲入上述命令时,控制台会出现形如下内容 [INFO] org.example:hello:jar:1.0-SNAPSHOT [INFO] +- org.springframework:spring-context dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context INFO] | \- org.springframework:spring-jcl:jar:5.2.0.RELEASE:compile [INFO] \- org.springframework:spring-context dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context
dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context artifactId> <version>5.3.31</version> </dependency> </dependencies> </project> 这里引入了spring-context 依赖,做为最基本的spring依赖,因为其包含了主要的Spring特性spring-beans、spring-aop、spring-context、spring-core、spring-expression AspectJ AOP库进行高级集成的所有类 spring-beans 包含对Spring bean进行操作的类 spring-beans-groovy 对Spring bean进行操作的Groovy类 spring-context META-INF/spring.components 中定义的候选项的访问功能,但核心类CandidateComponentsIndex 并不能再外部使用 spring-context-support 该模块是对spring-context
邮件,任务指定和调度,缓存抽象 语言支持:Kotlin,Apache Groovy Spring框架通过一个组件化的架构实现上述功能,包含如下模块: spring-core,spring-beans,spring-context 例如:如果只需要使用Spring框架的核心功能,只需要在项目的pom文件中添加“spring-context”依赖: <dependency> <groupId>org.springframework </groupId> <artifactId>spring-context</artifactId> <version>5.2.5.RELEASE</version> </dependency > 显然,“spring-context”模块依赖了其他4个基础模块:“spring-aop”,“spring-beans”,“spring-core”和“spring-expression”。
4.0.2.RELEASE.jar中的CommonAnnotationBeanPostProcessor类的代码,在里面打印出更详细的信息,以便我们分析和定位问题,下面我们一步一步通过实战来修改和编译spring-context 此时进入maven的本地仓库,找到spring-context的目录,在里面就能看到源码的jar包,如下图: ? maven的本地仓库,一般在用户目录的.m2文件夹下; 解压jar包,准备材料 在maven的本地仓库中,找到spring-context的目录后,将里面的spring-context-4.0.2.RELEASE.pom 这三个文件都复制到一个新建的文件夹中,然后将spring-context-4.0.2.RELEASE-sources.jar和spring-context-4.0.2.RELEASE.jar都解压; 新建spring-context 至此,我们实践了构建spring-context的jar包的过程,根据实际需要,我们可以先修改了源码再构建,例如下图是我修改的CommonAnnotationBeanPostProcessor类的源码,
☘️给Module加依赖 compile(project(":spring-context")) 添加依赖后,需要重新加载。 ; } } @Service注解是在spring-context中,前面依赖导入的作用就体现了。 指定msg为component name @ComponentScan注解也是在spring-context中,这里指定扫描包com.ber下的component names。
Spring 5.0下载 Maven: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context <version>5.0.0.RELEASE</version> </dependency> Gradle: compile group: 'org.springframework', name: 'spring-context
但是spring-webmvc 依赖 spirng-beans-4.2.4,spring-context 依赖 spring-beans-5.0.2,但是发现spirng-beans-4.2.4 加入到工程中 测试: 如果将上边 spring-webmvc 和 spring-context 顺序颠倒,系统将导入 spring-beans-5.0.2。 如下的配置是锁定了 spring-beans 和 spring-context 的版本: ? 还可以把版本号提取出来,使用标签设置成变量。 ?
写代码测试对象创建 jar包的特点,每个功能有三个jar包,基础jar包,文档jar包,源代码jar包 环境准备 做spring最基本功能的时候,导入四个核心jar包就可以了 spring-beans spring-context -- https://mvnrepository.com/artifact/org.springframework/spring-context --> <! --spring-context依赖上面所提到的其他spring的beans、core、expression jar包,所以这里只需要写着一个就够了--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId>
| | | \--- commons-logging:commons-logging:1.2 | | | \--- org.springframework:spring-context | +--- org.springframework:spring-beans:4.3.24.RELEASE (*) | | +--- org.springframework:spring-context +--- org.springframework:spring-beans:4.3.24.RELEASE (*) | +--- org.springframework:spring-context
</dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context <version>4.3.7.RELEASE</version> </dependency> 一共四个方面: 1)spring核心依赖 spring-core、spring-beans、spring-context
/spring-context/src/main/kotlin/org/springframework/ui/ModelExtensions.kt . /spring-context/src/main/kotlin/org/springframework/ui/ModelMapExtensions.kt . /spring-context/src/test/kotlin/org/springframework/context/annotation/Spr16022Tests.kt . /spring-context/src/test/kotlin/org/springframework/ui/ModelExtensionsTests.kt . /spring-context/src/test/kotlin/org/springframework/ui/ModelMapExtensionsTests.kt .
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> 下面介绍这5个部分的jar以及依赖关系 core core部分包含4个模块 spring-core:依赖注入IoC与DI的最基本实现 spring-beans:Bean工厂与bean的装配 spring-context 没有日志实现而排除了commons-logging依赖编译报错 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context