实例化Spring Ioc容器,生成SequenceGenerator

来源:互联网 发布:aim聊天软件申请 编辑:程序博客网 时间:2024/04/28 18:13

前言

Spring Recipes这本书中用到的软件构建工具室Maven,好处就是能够自动的辨别引用包文件的依赖包,并能够自动的下载到本地的资源库。这也就给初始学习Spring构建工程的同学们带来了很大的麻烦,尤其是不是用Maven构建的时候,我们不知道缺少了哪些依赖包,到底要把哪些Spring的包添加到所创建工程的引用中去。实际上如果是不使用Maven的话,就算是把所有的Spring包都放进去,还是不能成功的运行起来书中给出的第一个SequenceGenarator的示例。因为Spring默认依赖包commons-logging,这是apache commons项目中的一部分可以到http://commons.apache.org/proper/commons-logging/下载。使用Maven的同学们,也不用妄自庆幸,毕竟不亲手一步一步构建,这里面的依赖关系你可能永远都不会知道,你的工程里面每次都是庸庸肿肿的放进去了所有的框架包文件。

 

接下来看下在构建截止1.2节的这个“最小化示例”遇到的3个问题,它们是先后出现的:

1.找不到Spring配置文件

报错信息:Caused by: java.io.FileNotFoundException: class path resource [beans.xml] cannot be opened because it does not exist

解决:可能熟悉Java和熟悉Spring的同学看到这里要笑话我了,是的我对工程的classpath根目录总是个盲,总是不知道他在什么位置。我创建的beans.xml文件直接创建在了工程的根目录下,所以报了这个错。

这里所说的classpath路径就是src目录,把你创建好的beans.xml文件经过仔细核对后,(虽然很短,还是最好形成核对的习惯)放到src目录下这个问题就解决了。

 

2.找不到Logging类

报错信息:Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory

解决:就是文章最开始说道的了,Spring默认依赖包是commons-logging,这个包必须在你的build path\Libraries中。

 

3.找不到PropertyAccessor

报错信息:Caused by: java.lang.ClassNotFoundException: org.springframework.expression.PropertyAccessor

解决:开始没有认识到这个问题和第2个问题是同质的问题,还反复的查了几次beans.xml配置文件,要baidu的时候才恍然大悟。这个错误是缺少Spring的expression包,这个包在书中的给出的Maven项目依赖中。

 

结束语

解决的上边的3个问题,如果还有其他的异常,需要检查的是类有没有无参构造函数,属性有没有自动生成的Setter方式(建议自动生成,有些生成规则很特别,尤其是布尔类型的变量),检查Spring的配置文件是否和类名称、类属性一致。

原创粉丝点击