使用maven+eclipse搭建Spring mvc+security的tutorial环境

9 篇文章 0 订阅
一直对Spring没啥好感,IOC AOP搞的debug很不爽,最近又要看Spring MVC+Spring Security,入口好多,感觉自己以前的思路都被颠覆了,可能是不适应的缘故吧。人老了学点东西就是困难。。

简单写一下MVC+Security官方Tutorial搭建时候遇到的两个2b问题吧。。

因为官方例子用的是gradle而不是maven,而且我想自己写写pom了解下dependency,结果还真被坑了。

Spring security官方下载地址(包括源码和例子)

[url]https://codeload.github.com/spring-projects/spring-security/zip/3.1.7.RELEASE[/url]

[b]1.遇到的第一个问题:读Spring配置文件的时候XSD无法下载,Tomcat启动时报错[/b]

[quote]org.xml.sax.SAXParseException;
lineNumber: 14; columnNumber: 14; schema_reference.4:
Failed to read schema document 'http://www.springframework.org/schema/security/spring-security-3.1.xsd', because
1) could not find the document;
2) the document could not be read;
3) the root element of the document is not <xsd:schema>.[/quote]

奇怪的是这个鸟毛XSD我用浏览器是能下载的,在Eclipse里面自带的浏览器就打不开。NND

不过其实根本原因并不在这里,见解释:
[url=http://blog.csdn.net/hengyunabc/article/details/22295749]为什么在Spring的配置里,最好不要配置xsd文件的版本号[/url]

[b]然后我就在其他环境里面搜了一下这个XSD,发现丫藏在"spring-security-config"这个jar里面。在pom里面加上这个dependency,这个问题解决。[/b]

[b]2.依旧是启动时报错,类冲突[/b]

[quote]"Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.core.LocalVariableTableParameterNameDiscoverer$ParameterNameDiscoveringVisitor has interface org.springframework.asm.ClassVisitor as super class"[/quote]

讨论贴见[url]http://stackoverflow.com/questions/15758151/class-conflict-when-starting-up-java-project-classmetadatareadingvisitor-has-in[/url]

简单说明一下,Spring Security开发的较晚,所以Security的版本号和Spring本身module的版本号并不是一一对应的,并且如果版本乱搞的话会导致一些奇怪的不兼容异常,上面提到的就是这个奇怪的现象之一。

这个错误的根本原因在于(从Maven的dependency引用层级关系可以看到):[b]Spring Security config3.1.7需要Spring asm 3.0.7的包,但是我的Spring web mvc用的是3.2.8,这个版本的spring core已经把spring asm的支持包含了,所以会产生类冲突[/b]。

另外,bigbank这个例子中用到了spring security的自定义标签库<sec:authorize>等,需要加上以下dependency才能正常显示:

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>3.1.7.RELEASE</version>
</dependency>


如果使用这个标签库的话,project facets中的Dynamic Web Module需要为2.5或以上版本,不然的话标签不能起作用。如果在项目属性的Project Facets修改报错的话,参见以下链接:
[url]http://blog.csdn.net/steveguoshao/article/details/38414145[/url][url]http://blog.csdn.net/sunqing0316/article/details/43675837[/url]


最后附上pom中的dependency:

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>3.1.7.RELEASE</version>
<exclusions>
<exclusion>
<artifactId>spring-asm</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>3.1.7.RELEASE</version>
</dependency>
<!--JSTL is used by bigbank sample -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值