一直对Spring没啥好感,IOC AOP搞的debug很不爽,最近又要看Spring MVC+Spring Security,入口好多,感觉自己以前的思路都被颠覆了,可能是不适应的缘故吧。人老了学点东西就是困难。。
简单写一下MVC+Security官方Tutorial搭建时候遇到的两个2b问题吧。。
因为官方例子用的是gradle而不是maven,而且我想自己写写pom了解下dependency,结果还真被坑了。
Spring security官方下载地址(包括源码和例子)
https://codeload.github.com/spring-projects/spring-security/zip/3.1.7.RELEASE
1.遇到的第一个问题:读Spring配置文件的时候XSD无法下载,Tomcat启动时报错
奇怪的是这个鸟毛XSD我用浏览器是能下载的,在Eclipse里面自带的浏览器就打不开。NND
不过其实根本原因并不在这里,见解释:
为什么在Spring的配置里,最好不要配置xsd文件的版本号
然后我就在其他环境里面搜了一下这个XSD,发现丫藏在"spring-security-config"这个jar里面。在pom里面加上这个dependency,这个问题解决。
2.依旧是启动时报错,类冲突
讨论贴见 http://stackoverflow.com/questions/15758151/class-conflict-when-starting-up-java-project-classmetadatareadingvisitor-has-in
简单说明一下,Spring Security开发的较晚,所以Security的版本号和Spring本身module的版本号并不是一一对应的,并且如果版本乱搞的话会导致一些奇怪的不兼容异常,上面提到的就是这个奇怪的现象之一。
这个错误的根本原因在于(从Maven的dependency引用层级关系可以看到): Spring Security config3.1.7需要Spring asm 3.0.7的包,但是我的Spring web mvc用的是3.2.8,这个版本的spring core已经把spring asm的支持包含了,所以会产生类冲突。
另外,bigbank这个例子中用到了spring security的自定义标签库<sec:authorize>等,需要加上以下dependency才能正常显示:
如果使用这个标签库的话,project facets中的Dynamic Web Module需要为2.5或以上版本,不然的话标签不能起作用。如果在项目属性的Project Facets修改报错的话,参见以下链接:
http://blog.youkuaiyun.com/steveguoshao/article/details/38414145 http://blog.youkuaiyun.com/sunqing0316/article/details/43675837
最后附上pom中的dependency:
简单写一下MVC+Security官方Tutorial搭建时候遇到的两个2b问题吧。。
因为官方例子用的是gradle而不是maven,而且我想自己写写pom了解下dependency,结果还真被坑了。
Spring security官方下载地址(包括源码和例子)
https://codeload.github.com/spring-projects/spring-security/zip/3.1.7.RELEASE
1.遇到的第一个问题:读Spring配置文件的时候XSD无法下载,Tomcat启动时报错
引用
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>.
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>.
奇怪的是这个鸟毛XSD我用浏览器是能下载的,在Eclipse里面自带的浏览器就打不开。NND
不过其实根本原因并不在这里,见解释:
为什么在Spring的配置里,最好不要配置xsd文件的版本号
然后我就在其他环境里面搜了一下这个XSD,发现丫藏在"spring-security-config"这个jar里面。在pom里面加上这个dependency,这个问题解决。
2.依旧是启动时报错,类冲突
引用
"Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.core.LocalVariableTableParameterNameDiscoverer$ParameterNameDiscoveringVisitor has interface org.springframework.asm.ClassVisitor as super class"
讨论贴见 http://stackoverflow.com/questions/15758151/class-conflict-when-starting-up-java-project-classmetadatareadingvisitor-has-in
简单说明一下,Spring Security开发的较晚,所以Security的版本号和Spring本身module的版本号并不是一一对应的,并且如果版本乱搞的话会导致一些奇怪的不兼容异常,上面提到的就是这个奇怪的现象之一。
这个错误的根本原因在于(从Maven的dependency引用层级关系可以看到): Spring Security config3.1.7需要Spring asm 3.0.7的包,但是我的Spring web mvc用的是3.2.8,这个版本的spring core已经把spring asm的支持包含了,所以会产生类冲突。
另外,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修改报错的话,参见以下链接:
http://blog.youkuaiyun.com/steveguoshao/article/details/38414145 http://blog.youkuaiyun.com/sunqing0316/article/details/43675837
最后附上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>
本文记录了在搭建Spring MVC与Spring Security过程中遇到的问题及解决方案,包括配置文件XSD读取失败、类冲突等问题,并分享了正确的依赖配置。
2410

被折叠的 条评论
为什么被折叠?



