如何在Maven中配置Spring依赖
2个回答
展开全部
1.1 spring-security-core
Spring Security的核心功能是由spring-security-core包提供的,包含了认证和访问控制功能、支持standalone应用程序、方法级安全和JDBC支持。
3.2.3.RELEASE
4.0.4.RELEASE
org.springframework.security
spring-security-core
${org.springframework.security.version}
注意:我们使用的是3.2.x版本的Spring Security--Spring和Spring Security有着不同的版本计划,所以他们的版本号之间没有一对一关系。
如果项目使用的是较老版本的Spring,需要注意的时Spring Security 3.1.x版本不依赖于Spring 3.1.x版本,因为Spring Security 3.1.x版本在Spring 3.1之前发布。Spring的计划是在后续的版本中,使双方的版本号更为接近,更多细节请查看这个JIRA。我们将在后面的内容中看看这种情况对我们的实际影响。
1.2 spring-security-web
要为Spring Security增加Web支持,需要引入spring-security-web依赖:
org.springframework.security
spring-security-web
${org.springframework.security.version}
这个项目为Servlet环境引入了针对URL访问控制的相关基础安全组件和过滤器。
1.3 Spring Security与较老版本的Spring Core之间的依赖问题
如上文所述,这个新的依赖产生一个Maven依赖关系问题,Spring Security的相关jar不依赖于最新的Spring core的jar (而是以前的版本)。这可能使的被依赖的Spring core相关包在类路径中被配置前在最新的Spring 4.x相关包的前面。
这是如何发生的呢?我们需要了解Maven处理版本冲突的机制,Maven会选择与依赖树树根最接近的版本。在之前的情况中,spring-orm依赖4.x版本的spring-core,而spring-security-core依赖于3.2.8版本的spring-core。因此,spring-orm和sprint-security-web的定义顺序就是一个问题,先定义的会有更高的优先级。最终情况就是,我们的类路径中会有两个版本的spring-core。
为了避免这类问题,我们需要在我们的pom文件中明确指定一些Spring依赖,而不依靠Maven隐式依赖机制。我们将在pom的根文件中定义特定的依赖关系,这样这些依赖关系将会有更高的优先级。下面例子中,将对所有的Spring核心组件明确定义相同的版本,对于多模块项目,需要在父配置文件的dependencyManagement属性中定义。
org.springframework
spring-core
${org.springframework.version}
org.springframework
spring-context
${org.springframework.version}
org.springframework
spring-jdbc
${org.springframework.version}
org.springframework
spring-beans
${org.springframework.version}
org.springframework
spring-aop
${org.springframework.version}
org.springframework
spring-tx
${org.springframework.version}
org.springframework
spring-expression
${org.springframework.version}
org.springframework
spring-web
${org.springframework.version}
1.4 spring-security-config及其他
要使用丰富的Spring Security XML的命名空间,需要定义spring-security-config依赖:
org.springframework.security
spring-security-config
${org.springframework.security.version}
runtime
没有任何代码需要在编译时依赖这个包,所以它的范围应该定义为runtime。
最后,LDAP、ACL、CAS和OpenID支持需要分别增加各自的依赖包:spring-security-ldap, spring-security-acl, spring-security-cas和spring-security-openid。
Spring Security的核心功能是由spring-security-core包提供的,包含了认证和访问控制功能、支持standalone应用程序、方法级安全和JDBC支持。
3.2.3.RELEASE
4.0.4.RELEASE
org.springframework.security
spring-security-core
${org.springframework.security.version}
注意:我们使用的是3.2.x版本的Spring Security--Spring和Spring Security有着不同的版本计划,所以他们的版本号之间没有一对一关系。
如果项目使用的是较老版本的Spring,需要注意的时Spring Security 3.1.x版本不依赖于Spring 3.1.x版本,因为Spring Security 3.1.x版本在Spring 3.1之前发布。Spring的计划是在后续的版本中,使双方的版本号更为接近,更多细节请查看这个JIRA。我们将在后面的内容中看看这种情况对我们的实际影响。
1.2 spring-security-web
要为Spring Security增加Web支持,需要引入spring-security-web依赖:
org.springframework.security
spring-security-web
${org.springframework.security.version}
这个项目为Servlet环境引入了针对URL访问控制的相关基础安全组件和过滤器。
1.3 Spring Security与较老版本的Spring Core之间的依赖问题
如上文所述,这个新的依赖产生一个Maven依赖关系问题,Spring Security的相关jar不依赖于最新的Spring core的jar (而是以前的版本)。这可能使的被依赖的Spring core相关包在类路径中被配置前在最新的Spring 4.x相关包的前面。
这是如何发生的呢?我们需要了解Maven处理版本冲突的机制,Maven会选择与依赖树树根最接近的版本。在之前的情况中,spring-orm依赖4.x版本的spring-core,而spring-security-core依赖于3.2.8版本的spring-core。因此,spring-orm和sprint-security-web的定义顺序就是一个问题,先定义的会有更高的优先级。最终情况就是,我们的类路径中会有两个版本的spring-core。
为了避免这类问题,我们需要在我们的pom文件中明确指定一些Spring依赖,而不依靠Maven隐式依赖机制。我们将在pom的根文件中定义特定的依赖关系,这样这些依赖关系将会有更高的优先级。下面例子中,将对所有的Spring核心组件明确定义相同的版本,对于多模块项目,需要在父配置文件的dependencyManagement属性中定义。
org.springframework
spring-core
${org.springframework.version}
org.springframework
spring-context
${org.springframework.version}
org.springframework
spring-jdbc
${org.springframework.version}
org.springframework
spring-beans
${org.springframework.version}
org.springframework
spring-aop
${org.springframework.version}
org.springframework
spring-tx
${org.springframework.version}
org.springframework
spring-expression
${org.springframework.version}
org.springframework
spring-web
${org.springframework.version}
1.4 spring-security-config及其他
要使用丰富的Spring Security XML的命名空间,需要定义spring-security-config依赖:
org.springframework.security
spring-security-config
${org.springframework.security.version}
runtime
没有任何代码需要在编译时依赖这个包,所以它的范围应该定义为runtime。
最后,LDAP、ACL、CAS和OpenID支持需要分别增加各自的依赖包:spring-security-ldap, spring-security-acl, spring-security-cas和spring-security-openid。
展开全部
在Maven中Spring的基础配置 Spring是高度模块化的,可以单独使用Spring的某个库而不需要依赖Spring的其他库。比如,使用Spring Context库不需要依赖Spring Persistence或者Spring MVC库。 让我们先从最简单开始,在Maven中配置spring-context依赖: <properties> <org.springframework.version>3.2.8.RELEASE</org.springframework.version> <!-- <org.springframework.version>4.0.2.RELEASE</org.springframework.version> --> </properties> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework.version}</version> <scope>runtime</scope> </dependency>
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询