文档章节

Property 'sqlMapClient' is required

海子_枫子
 海子_枫子
发布于 2015/05/02 00:11
字数 817
阅读 114
收藏 0
点赞 0
评论 0

在进行 SSI整合时,总是报下边的错误: nested exception is java.lang.IllegalArgumentException: Property 'sqlMapClient' is required 

详细的错误信息如下:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personDao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlMapClient' is required

在配置文件applicationContext中查看后发现配置中没有properties标签,很明显是没有将sqlMapClien注入到personDao中:

<bean id="personDao" class="com.zaj.dao.PersonDao"/>        

正常思维就是将已经注册的sqlMapClient注入到personDao中,修改如下:

 <bean id="personDao" class="com.zaj.dao.PersonDao"> 
  <property name="sqlMapClient" ref="sqlMapClient"></property>
 </bean>

试运行,没错,运行正确,错误没了。可是我对照事例中的xml文件,明明是没有这个properties的,这到底是为什么?仔细对比,发现在事例的xml文件头里边,有一个属性,如下:

 default-autowire="byName"

按着事例的样子,把属性加上,注释掉刚才新加的properties,再次运行,果然可以,看到byName,想起来原来好像听马哥(马士兵)说过,有byName和byType自动加载的属性,基于学习起见,找出spring的参考文档,找啊找,终于找到下边的内容:

Optional attribute controlling whether to "autowire" bean properties.
	This is an automagical process in which bean references don't need to be coded
	explicitly in the XML bean definition file, but Spring works out dependencies.

	There are 5 modes:

	1. "no"	 No automagical wiring. Bean references
	must be defined in the XML file via the <ref> element. We recommend this
	in most cases as it makes documentation more explicit.	
	Autowiring by property name. If a bean of class Cat exposes a dog property,
	Spring will try to set this to the value of the bean "dog" in the current factory.	

	3. "byType"
	Autowiring if there is exactly one bean of the property type in the bean factory.
	If there is more than one, a fatal error is raised, and you can't use byType
	autowiring for that bean. If there is none, nothing special happens;
	use dependency-check="objects" to raise an error in that case.

	4. "constructor"
	Analogous to "byType" for constructor arguments. If there isn't exactly one bean
	of the constructor argument type in the bean factory, a fatal error is raised.

	5. "autodetect"
	Chooses "constructor" or "byType" through introspection of the bean class.
	If a default constructor is found, "byType" gets applied.

	The latter two are similar to PicoContainer and make bean factories simple to
	configure for small namespaces, but doesn't work as well as standard Spring
	behaviour for bigger applications.

	Note that explicit dependencies, i.e. "property" and "constructor-arg" elements,
	always override autowiring. Autowire behavior can be combined with dependency
	checking, which will be performed after all autowiring has been completed.

	Note: This attribute will not be inherited by child bean definitions.
	Hence, it needs to be specified per concrete bean definition.
  意思是如果被bean中暴露出来一个bean后,如果找不到被暴露出来的这个bean,不会报错,但是如果使用dependency-check="objects"则会报错,但是我是什么都没有暴露他出的错误啊,又仔细看发现mode ‘no’,人家明显写着The traditional Spring default.说默认是no,就是说默认不会自动wire,必须在xml文件中手动注入,手动连接,这下就明白了,原来没写default-autowire="byName"的时候是找不到sqlMapClient的,因为默认使用的是no!
后来我就试了一下byType完全没有影响啊,估计是因为我的id都是唯一的,其他的就没有再试了,有兴趣大家可以自己试。
  这下就对这个错误了解比较深了,也对spring配置有所了解,希望对碰见这个错误的同学有所帮助。


本文转载自:http://www.cnblogs.com/mecca/p/3499449.html

共有 人打赏支持
海子_枫子
粉丝 5
博文 40
码字总数 3371
作品 0
南京
程序员
spring3 ibatis SqlMapClient和SqlMapClientTemplate注入的问题

哪位大虾 解释一下 SqlMapClient和SqlMapClientTemplate的区别,看到好多资料 先在Dao里注入template 然后再在Template 里注入 SqlMapClient。有的说是 直接注入SqlMapClient就可以,这两种方...

王威 ⋅ 2011/08/17 ⋅ 6

Spring整合Ibatis之SqlMapClientDaoSupport

Spring通过DAO模式,提供了对iBATIS的良好支持。SqlMapClient对象是iBATIS中的主要对象,我们可以通过配置让spring来管理SqlMapClient对象的创建,继而整合iBatis和Spring。 与hibernate类似...

Gillian_Male ⋅ 2012/08/03 ⋅ 1

spring管理ibatis事务

<sqlMapConfig> <sqlMap resource="com/angi/ibatis/maps/User.xml" /> </sqlMapConfig> 以上配置省去了transactionManager的配置,就会使用external(外部)事务管理(ExternalTransaction......

lvzjane ⋅ 2013/11/17 ⋅ 1

ibatis学习(一)--ibatis介绍以及用例 [转]

介绍 iBATIS是以SQL为中心的持久化层框架。能支持懒加载、关联查询、继承等特性。 iBATIS不同于一般的OR映射框架(eg:hibernate)。OR映射框架,将数据库表、字段等映射到类、属性,那是一种元...

B.H. ⋅ 2012/09/26 ⋅ 0

一个关于Ibatis与spring的错误

Zofda ⋅ 2010/12/14 ⋅ 8

Could not open ServletContext resource [/WEB-INF/SqlMapConfig.xml]

服务器启动的时候出现这个问题,请问是什么原因 还有web.xml中如果去掉struts2的配置 就可以正常访问网页 但是如果加进去,就会出现 404的错误 求解 Caused by: java.io.FileNotFoundExcepti...

YYxlid ⋅ 2013/07/18 ⋅ 2

spring和ibaits整合详解

ibatis和Spring整合的详细例子,数据库用的是mysql,开发环境是Eclipse3.2: 1.首先把用到的包导入进来,此例用的是spring-framework-1.2.7,iBATIS_DBL-2.1.7.597,mysql的数 据库连接包用的是mys...

lvzjane ⋅ 2013/03/03 ⋅ 0

我理解的spring&ibatis

一、spring&ibatis是什么 spring和ibatis是两个框架,那么框架又是神马呢,框架就是用来简化编程的工具,只要按照框架所设定的规则去编程,可以极大的提高程序开发效率。 spring和ibatis就是...

shiw019 ⋅ 2014/01/19 ⋅ 1

Ibatis学习笔记

Ibatis是开源软件组织Apache推出的一种轻量级的对象关系映射(ORM)框架,和Hibernate、Toplink等在java编程的对象持久化方面深受开发人员欢迎。 对象关系映射(ORM):简单原理是通过面向对象方...

为梦而来 ⋅ 2014/05/14 ⋅ 2

BeanCreationException异常

最近在搞Ibatis跟spring集成的时候,遇到这样一个问题,我在dao继承SqlMapClientDaoSupport时,报了下面这错误,一直纠结,请教各位大侠 严重: Exception sending context initialized event...

虾米籽 ⋅ 2012/05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 35分钟前 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部