假设您正在使用旧版本号的Spring —— 也须要了解这个非常不直观的事实, Spring Security 3.1.x也不依赖于Spring 3.1.x版本号! 这是由于 Spring Security 3.1.x 在 Spring 3.1之前公布. Spring计划在以后的版本号中将这些依赖关系尽量保持一致,想要了解很多其它信息能够參考 他们的JIRA计划 ,但眼下肯定是不一致的,以下我们将看到详细的情况.
2.2. spring-security-web 要为 Spring Security 加入 Web 支持,须要加入 spring-security-web 依赖: <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${org.springframework.security.version}</version> </dependency>它包括了在Servlet环境中进行URL訪问控制所需的过滤器(filter)及web相关的安全基础类.
2.3. Spring Security 和老版本号 Spring Core 的依赖问题 这个新的依赖也显示了 Maven依赖图的一个问题 —— 如前所述,Spring Security 的jar包依赖的不是最新的Spring core jar包(而是先前版本号的). 这可能会导致出如今 classpath 中的是 旧版本号的依赖,而屏蔽了新版本号的 Spring 4.x 项目(artifacts). 要理解为什么会发生这样的问题,我们须要看看 Maven是怎样解决冲突的 —— 假设发生版本号冲突,Maven将优先选择离依赖树的根(the root of the tree)近期的jar包. 在我们的样例中, spring-core 被两个地方依赖: spring-orm ( 4.x.release 版本号)和 spring-security-core (依赖老的 3.2.8.RELEASE 版),所以在这两个地方, 在我们的项目中 spring-jdbc 距离 root pom 的深度为1. 因此,在我们的pom文件里 spring-orm 和 spring-security-core 定义的顺序将起决定作用 - 谁先出现谁就具有优先权, 因此我们终于可能得到的jar包版本号并不确定. 要解决问题,我们必须明白定义一些Spring的依赖项,而不是使用Maven 的隐式依赖解决机制 —— 我们自定义以后能够将特定的依赖置于pom中深度为0的层级,保证优先级. 以下的部分须要置于同一个文件夹下,而且都须要明白定义,假设在多模块项目中,须要置于parent项目的 dependencyManagement 元素下: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${org.springframework.version}</version> </dependency>2.4. spring-security-config 和其它jar包
要使用丰富的Spring Security XML名称空间, 须要引入 spring-security-config 依赖: <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${org.springframework.security.version}</version> <scope>runtime</scope> </dependency>由于没有哪个应用在编译时须要依赖这个jar包,所以它的作用域( scope)应该设置为 runtime . 最后,LDAP, ACL, CAS 和 OpenID支持对 Spring Security有自己的依赖关系: spring-security-ldap , spring-security-acl , spring-security-cas 和 spring-security-openid . 3. 使用 Snapshots 和 Milestones 版本号 Spring Security的 Milestones(里程碑,M1,M2..) 和 Snapshots版 在Spring自己的Maven仓库中提供 —— 关于怎样配置的细节,请查看 怎样使用Snapshots和Milestones版. 4. 总结本文讨论了使用 Maven集成 Spring Security 实际的细节 . Maven依赖的介绍当然是最基本的部分,此外还有几个值得一提的技术点和还须要等待的地方. 只是这也算是使用Maven管理Spring项目的一个非常好的起点.
转载于:https://www.cnblogs.com/bhlsheji/p/5111017.html
相关资源:数据结构—成绩单生成器