- 浏览: 34548 次
- 性别:
- 来自: 北京
文章分类
最新评论
在学习 spring 过程中遇见了种种不同的异常错误,这里做了一下总结,希望遇见类似错误
的同学们共勉一下。
1. 错误一
Error creating bean with name 'helloServiceImpl' defined in class path resource [springservice.xml]: Error setting property values; nested exception is
org.springframework.beans.NotWritablePropertyException: Invalid property 'helloDao' of bean
class [www.csdn.spring.service.impl.HelloServiceImpl]: Bean property 'helloDao' is not writable
or has an invalid setter method. Does the parameter type of the setter match the return type of the
getter?
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property
'helloDao' of bean class
这类错误是:一般都是创建了一个 dao 的 spring 文件比如 spring-dao 有创建了一个 service 的
spring 文件,在 spring-service.xml 中引用 dao 的中定义的 id 名,导致的错误,疏忽是: 写
service 实现类的时候忘记了写对应 dao 的 setter 方法,即所谓的依赖注入
比如:
private HelloDao helloDao;
//set 依赖注入很重要,不写会报错,不能读写 helloDao 这一属性
publicvoid setHelloDao(HelloDao helloDao) {
System.out
.println("控制反转:应用程序本身不在负责创建 helloDao 对象,而是由 spring 容器负责创
建、管理、维护,这样控制权转移,称为反转。 "
+ "可以通过依赖注入方式注入该 HelloDao 对象");
this.helloDao = helloDao;
}
2. 错误二
Configuration problem: Failed to import bean definitions from relative location [springdao.xml]Offending resource: class path resource [spring.xml]; nested exception is
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 9 in XML
document from class path resource [spring-dao.xml] is invalid; nested exception is
org.xml.sax.SAXParseException: Open quote is expected for attribute "{1}" associated with an
element type "scope".
Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 9 in
XML document from class path resource [spring-dao.xml] is invalid; nested exception is
org.xml.sax.SAXParseException: Open quote is expected for
Caused by: org.xml.sax.SAXParseException: Open quote is expected for attribute "{1}"
associated with an element type "scope".
这种错误是马虎的错误,在对应的 spring 的配置文件中, bean 标签的 scope 属性忘了加引
号,在配置文件中国不会报错,但是在运行的时候就会出这样的错,一般导致错误的原因
是复制的时候疏忽了引号,直接将原来的引号覆盖了,导致了最后该属性没有引号。
<bean id="helloDaoImpl" class="www.csdn.spring.dao.impl.HelloDaoImpl"
scope="prototype"></bean>
错误的写成:
bean id="helloDaoImpl" class="www.csdn.spring.dao.impl.HelloDaoImpl"
scope=prototype></bean>
3. 错误三
No bean named 'helloServiceImp' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition
这种报错但是没有 Caused by 语句的错误一般都是使用的时候单词写错了,这里写错的地
方是在 java 类中,类中引用 id 的时候写错了单词;比如这里的错,注意下面的红色文字:
HelloService helloService2 = (HelloService)
context.getBean("helloServiceImp",HelloServiceImpl.class);
<bean id="helloServiceImpl" class="www.csdn.spring.service.impl.HelloServiceImpl" sco
pe="singleton" lazy-init="false">
<property name="helloDao" ref="helloDaoImpl"/>
</bean>
眼尖的哥们估计都看出来了这两个单词写的不一样,获取 bean 的方法中引用的 id 少写了
一个“i”,导致 spring 容器在读取的时候不能识别。以后注意细心就好。
4. 错误四
Error creating bean with name 'helloServiceImpl' defined in class path resource [springservice.xml]: Cannot resolve reference to bean 'helloDaoImp' while setting bean property
'helloDao'; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named
'helloDaoImp' is defined
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named
'helloDaoImp' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition
这种也是单词写错的情况,与上面不同的是这种情况给出了 Caused by 语句,让你更清楚
错误发生的原因,英文还差不多的哥们或者有一定编程经验的人员一看 Caused by 语句就
应该能判断出什么错误;这里错误原因明显才、指出每一个名字为'helloDaoImp'的 bean,
或名字为'helloDaoImp'的 bean 未定义,这种错也好好找,一般都是互相引用的 spring 配置
文件马虎出的错,下面一个例子说明:比如 spring-service.xml 引用 spring-dao 的时候,还
是如上面说的一样,重点再红色字体
Service 配置文件中这么写:
<bean id="helloServiceImpl" class="www.csdn.spring.service.impl.HelloServiceImpl" sco
pe="singleton" lazy-init="false">
<property name="helloDao" ref="helloDaoImp"/>
</bean>
但是 dao 配置文件中却这么写:
bean id="helloDaoImpl" class="www.csdn.spring.dao.impl.HelloDaoImpl"
scope="prototype"></bean>
写到这大家就清楚了吧,与上一个错误基本上一样,都是单词写错的错误,只不过不同的
是上一个错误是在 java 类中引用 id 的时候写错单词出的错,而这一个错误是在 spring 配置
文件中国引用 id 出的错,万变不离其宗,错误的额原因都是单词写错,今后细心即可。
5. 错误五
Cannot find class [www.csdn.spring.dao.imp.HelloDaoImpl] for bean with name
'helloDaoImpl' defined in ServletContext resource [/WEB-INF/applicationContext.xml];
nested exception
isjava.lang.ClassNotFoundException:www.csdn.spring.dao.imp.HelloDaoImpl
Caused by: java.lang.ClassNotFoundException: www.csdn.spring.dao.HelloDaoImpl
错误原因:倒错包了,我的 web 项目 HelloDaoImpl 在 dao.impl 包下而不是 dao 包下。所
以包这样的错,看一下 spring 配置文具店额 classes 标签的值导入的类包名是否正确
6. 错误六
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating
bean with name 'employeeBean' defined in class path resource [spring-constructor.xml]:
Unsatisfied dependency expressed through constructor argument with index 2 of type
[double]: Ambiguous constructor argument types - did you specify the correct bean
references as constructor arguments?
错误原因: bean 实例类中的属性类型与 spring 配置文件中的构造器属性类型不对应所导
致,这种情况多出在使用类型指定构造器参数;比如:
类中属性如下,重点注意红色部分:
private String name;
private String sex;
private doublesalary;
spring 配置文件中的构造器标签
<constructor-arg type="java.lang.String" value="杨凯" />
<constructor-arg type="java.lang.String" value="男" />
<constructor-arg type=" java.lang.Double" value="5000.00" />
这种错误是因为构造器中的 type 属性不会自动对应拆箱装箱属性类型,简单点说就是类中
使用的是基本数据类型,配置文件中对应的 type 属性值就要是基本数据类型;类中使用的
是类类型,配置文件中对应的 type 属性值就要是包名加上类类型;
还有一种原因就是不对应的原因, constructor-arg 直接写错了,比如:
private doublesalary;对应了<constructor-arg type=" Double" value="5000.00" />
或者顺序不对的情况下回出现赋值错误,比如同时存在两个相同类型的属性, name 应该
为“杨凯”,如果 sex 在配置文件的位置与 name 的颠倒了,会出现 name=“男”的情况
7. 错误七
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'memberBean' defined in class path resource [spring-construtor.xml]: Initialization of bean failed;
nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to
convert property value of type 'java.lang.String' to required type
'www.csdn.spring.constructor.Member' for property 'member'; nested exception is
java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type
[www.csdn.spring.constructor.Member] for property 'member': no matching editors or conversion
strategy found
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert
property value of type 'java.lang.String' to required type 'www.csdn.spring.constructor.Member'
for property 'member'; nested exception is java.lang.IllegalStateException: Cannot convert value
of type [java.lang.String] to required type [www.csdn.spring.constructor.Member] for property
'member': no matching editors or conversion strategy found
错误原因:这种情况是一个 bean 实例引用另一个 bean 实例对象,而引用的那个 bean 实例
对象为空,但是在改 bean 实例的配置文件中又错误指明空值。举个例子说明:
<bean id="memberBean" class="www.csdn.spring.constructor.MemberBean">
<!-- value="null" 这里给 value 赋的是一个空字符串,而不是一个 null 空值 -->
<property name="name" value="null"/>
<property name="member">
<null/>
</property>
</bean>
关键看红色部分,红色部分是正确的写法,这样写引用空值对象才不会报错,但是如果你
像上面引用 nam 属性那样指明 value=“null”就会出现改错。
8. 错误八
错误一:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration
problem: Bean name 'deptBean' is already used in this <beans> element
Offending resource: class path resource [spring-byType.xml]
错误二:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with
name 'empBean' defined in class path resource [spring-byType.xml]: Unsatisfied dependency
expressed through bean property 'deptBean': : No qualifying bean of type
[www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but found 2:
deptBean,deptBean1; nested exception is
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of
type [www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but found
2: deptBean,deptBean1
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying
bean of type [www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but
found 2: deptBean,deptBean1
这两种错误原因:都是 spring 配置文件中自动装配按 byType 时出的问题,配置文件, 红色部
分为错误的解释和导致错误的原因如下:
<bean id="compBean" class="www.csdn.spring.autowire.CompBean">
<property name="name" value="DELL"/>
</bean>
<bean id="deptBean" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="销售部门"/>
</bean>
<!--
这里只能出现一个 deotBean,id 名不一样但是类型一样,都是 deptBean 实体的;
id="deptBean"或同类型的不同 id 都会抛异常
<bean id="deptBean1" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="销售部门"/>
</bean> -->
<!-- 使用 autoWrie 自动装配,改属性值 byType;
按类型自动装配,前提是同一个类型的只能有一个-->
<bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="byType">
<property name="name" value="杨凯"/>
<!-- <property name="comp" ref="compBean"/>
<property name="dept" ref="deptBean"/> -->
</bean>
9. 错误九
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with
name 'empBean' defined in class path resource [spring-byConstructor.xml]: Unsatisfied
dependency expressed through constructor argument with index 0 of type
[www.csdn.spring.autowire.DeptBean]: : No qualifying bean of type
[www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but found 2:
deptBean1,deptBean2; nested exception is
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of
type [www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but found
2: deptBean1,deptBean2
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying
bean of type [www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but
found 2: deptBean1,deptBean2
错误原因: spring 配置文件中自动装配按 constructor 时出的问题,配置文件, 红色部分为错
误的解释和导致错误的原因如下:
<!-- 在 spring3.2 以上版本中:使用构造器自动装配时,如果有一个 id 与 bean 实例中的属
性名相同的配置 bean 存在,虽然构造器自动装配是按类型自动装配的,
但是即使有多个相同类型的 bean 存在也不受影响;受影响的情况是:没有与 bean 实例中
的属性名相同的配置 bean 存在,
又有多个相同类型的 bean 配置,就会抛异常-->
<bean id="deptBean" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="销售部门"/>
</bean>
<bean id="deptBean1" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="销售部门"/>
</bean>
<bean id="deptBean2" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="销售部门"/>
</bean>
<!-- 使用 autoWrie 自动装配,改属性值 constructor;构造器自动装配就是按类型自动装配
beam 实例中必须结合构造器使用,如果没有构造器自动装配后注入不进去值,取出为空
值-->
<bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="constructor
"> <
property name="name" value="杨凯"/>
<!-- <property name="comp" ref="compBean"/>
<property name="dept" ref="deptBean"/> -->
</bean>
10. 错误十
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration
problem: Unexpected failure
during bean definition parsing
Offending resource: class path resource [spring-collection.xml]
Bean 'collectionBean'; nested exception is
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: <property> element for property 'users' must specify a ref or value
Offending resource: class path resource [spring-collection.xml]
Bean 'collectionBean'
-> Property 'users'
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: <property>
element for property 'users' must specify a ref or value
Offending resource: class path resource [spring-collection.xml]
Bean 'collectionBean'
-> Property 'users'
乍一看,有些许没有头脑,但是放下心仔细看看,提示说什么 users 属性怎么怎么滴;还
有一点提示就是说是 spring-collection.xml 配置文件中的错误,这就好找,找到改配置中
有关 users 的地方,
<bean id="u1" class="www.csdn.spring.collection.set.User">
<property name="name" value="杨凯" />
<property name="age" value="22" />
</bean>
。。。。。
这样的代码肯定不会出错了,如果是这里的错报的就不是这个错了,可能就是第一条或第
二条错了;再找下一块有 users 的地方,找到了这里:
<!-- list 集合 -->
<property name="users">
<!-- <array>
<ref bean="u1" />
<ref bean="u2" />
<ref bean="u3" />
</array> -->
<!-- <list>
<ref bean="u1"/>
<ref bean="u2"/>
<ref bean="u3"/>
</list> -->
<!-- 还可以通过 spring 自带的 sehema 约束中的 util 工具约束的 list 集合遍历-->
<util:list>
<ref bean="u1" />
<ref bean="u2" />
<ref bean="u3" />
</util:list>
</property>
仔细一看真是这里的错,红色部分最开始忘了写,注释掉了上面的 list 注入值的方式,后
面的 uti 标签注入值有没有写,这是在测试类中取值遍历的时候就会遍历一个空的 users,
这是因为是没有注入值的错,所以没有报空指针的错,报的是这种莫名其妙的错。
11. 错误十一
org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named
'proxyFactoryBean' must be of type [www.csdn.spring.advice.SayServiceImpls], but was actually
of type [$Proxy4]
这种错误一般出在 aop 面向切面的编程中,spring 面向切面的代理有两种,一种是 jdk 动态代
理,一种是 cglib 代理;这是你在使用的的使用如果混合时候就会出现上面的错;这两种代理的
区别是前者是接口代理,就是返回一个接口类型对象,而后者是类代理,不能返回接口类型对
象只能返回类类型对象,如果返回接口了同样会出这样的错。
还有可能出错的地方就是对应的 spring 配置文件,这
里是最容易马虎出错的地方,仔细检查一下的你的目标对象,比如: <!-- 目标对象 -->
<property name="target">
<ref bean="sayServiceImpls"/>
</property>
这里在引用 bean 的时候可能引入错误,可能会引入 jdk 动态代理的目标类,也有可能你的
目标类中实现了某些接口,不符合 cglib 代理的理念;还有可能马虎出错的地方:
<!-- 真实主题 目标对象 -->
<bean id="sayServiceImpls" class="www.csdn.spring.advice.SayServiceImpls"></bean>
真实对象的 id 和 class 属性设置错误的时候也会出错。
12. 错误十二
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'proxyFactoryBean' defined in class path resource [spring-advice.xml]: Error setting property
values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested
PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property
'proxyInterfaces' threw exception; nested exception is java.lang.IllegalArgumentException:
[www.csdn.spring.proxy.advice.SayServiceImpl] is not an interface
Caused by: org.springframework.beans.PropertyBatchUpdateException; nested
PropertyAccessExceptions (1) are:PropertyAccessException 1:
org.springframework.beans.MethodInvocationException: Property 'proxyInterfaces' threw
exception; nested exception is
java.lang.IllegalArgumentException: [www.csdn.spring.proxy.advice.SayServiceImpl] is not an
interface
这个问题很好解决,最关键的问题出在红色部分,原因是在 spring 相关配置文件中设置抽
象主题的时候,既然是抽象主题就应该设置成接口,而不应该是实现类。比如下面的代
码,注意红色部分:
<!--抽象主题 实现接口 -->
<property name="proxyInterfaces">
<array>
<value>www.csdn.spring.proxy.advice.SayServiceImpl</value>
</array>
</property>
正确的写法应该是:
<!--抽象主题 实现接口 -->
<property name="proxyInterfaces">
<array>
<value>www.csdn.spring.proxy.advice.SayService</value>
</array>
</property>
13. 错误十三
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'proxyFactoryBean': FactoryBean threw exception on object creation; nested exception is
org.springframework.aop.framework.AopConfigException: Unknown advisor type class
www.csdn.spring.proxy.advice.AuditableImpl; Can only include Advisor or Advice type beans in
interceptorNames chain except for last entry,which may also be target or TargetSource; nested
exception is org.springframework.aop.framework.adapter.UnknownAdviceTypeException:
Advice object [www.csdn.spring.proxy.advice.AuditableImpl@1f758500] is neither a supported
subinterface of [org.aopalliance.aop.Advice] nor an [org.springframework.aop.Advisor]
Caused by: org.springframework.aop.framework.AopConfigException: Unknown advisor type
class www.csdn.spring.proxy.advice.AuditableImpl; Can only include Advisor or Advice type
beans in interceptorNames chain except for last entry,which may also be target or TargetSource;
nested exception is
org.springframework.aop.framework.adapter.UnknownAdviceTypeException: Advice object
[www.csdn.spring.proxy.advice.AuditableImpl@1f758500] is neither a supported subinterface of
[org.aopalliance.aop.Advice] nor an [org.springframework.aop.Advisor]
这个错误即红色部分提示的错误,不知道 advice 类型的异常,说白了就是编写的 spring
通知的错误,这种错误比较常见,也是出于马虎的错误,比如前者通知、后置通知、环绕
通知、异常通知、引入通知等这几个通知中的任何一个通知类忘了写继承的父类;以下列
出这几个通知的类编写所继承的类:
前置通知:
public class BeforeAdvice implements MethodBeforeAdvice
后置通知:
public class AfterAdvice implements AfterReturningAdvice
环绕通知:
public class AroundAdvice implements MethodInterceptor
异常通知:
public class ThrowAdvice implements ThrowsAdvice
引入通知:
public class AuditableImpl extends DelegatingIntroductionInterceptor implements Auditable
14. 错误十四
java.lang.ClassCastException:
$Proxy10 cannot be cast to www.csdn.spring.proxy.advice.Auditable
java.lang.ClassCastException:
$Proxy11 cannot be cast to www.csdn.spring.proxy.advice.Auditable
像以上这个出现$ProxyXX cannot be cast to www.csdn.spring.proxy.advice.Auditable;什
么代理不能强转成某一个类型的错误,一般都是在使用 JDK 动态代理或 cglib 代理的时候
出现的错误,错误原因有:
1) .JDK 动态代理与 cglib 代理混淆,比如使用 cglib 代理时不能实现接口,你可能在使用
的时候使用了 cglib 代理,但是却实现了接口,如果你在 spring 配置文件中使用 aspectjs
来进行通知,又想使用 cglib 接口那么你需要做的是目标类不实现接口, spring 配置文件中
配置 aop 的时候加上下面红色部分。
<aop:aspectj-autoproxyproxy-target-class="true"/>
2)同样是使用 aspectjs 通知的时候,尤其是使用引入通知的时候,一定不要忘了让引用
通知的业务类加上注解@Aspect;还要注意的是你使用的引入目标类和其实现接口的类路
径一定要正确,我这里就范了一个小错误,到错包的错:
package www.csdn.spring.proxy.advice.aspectjs;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.DeclareParents;
@Aspect
publicclass AuditableService {
@DeclareParents(value="*..*Service*", defaultImpl = AuditableImpl.class)
public Auditable auditable;
}
我在使用 Auditable 接口的时候倒错了包,这里其实类都在同一包下,根本不用倒包,但
是我从上一个包中复制代码的时候自动给我引入了上一个包的 Auditable 类;以后一定要
注意了
15. 错误十五
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration
problem: <aspect> tag needs aspect bean reference via 'ref' attribute when declaring advices.
Offending resource: file [F:\csdn-study\MyWorkspace\springHelloJava\bin\springpojoXmlAspectjs.xml]
Aspect: ref=''
这个错误顾名思义,这里已经提示的很清了,这里列出这个错误是对那些对 pojo-xml 配置
通知不太熟悉的同学而言;这个错误就是在对应的 spring 配置文件中使用 aop 切面的时候
忘写了一个 ref 熟悉的错,具体案例代码如下,注意下面的红色部分,错误就出在红色部
分忘了写 ref="adviceService":
<!-- 使用 pojo-xml aspectjs 配置自动代理 -->
<aop:config>
<!-- 配置切面 -->
<aop:aspect ref="adviceService">
<!-- 引入通知 -->
<aop:declare-parents types-matching="*..*Service*"
implement-interface="www.csdn.spring.proxy.advice.aspectjs.pojoxml.Auditable"
default-impl="www.csdn.spring.proxy.advice.aspectjs.pojoxml.AuditableImpl" />
<!-- 切面切入的位置切入点,可以同时写多个不同的切入点 -->
<aop:pointcut expression="execution(* www.csdn..UserServiceImpl.save(..))"
id="myPcut" />
<aop:pointcut expression="execution(* www.csdn..UserServiceImpl.update(..))"
id="myPcuts" />
<!--织入通知 method:指明方法; pointcut-ref 引入切入点 -->
<aop:before method="beforeMethod" pointcut-ref="myPcut" />
<aop:after method="afterMethod" pointcut-ref="myPcut" />
<aop:around method="aroundMethod" pointcut-ref="myPcuts" />
</aop:aspect>
</aop:config>
16. 错误十六
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'deptDaoImpl' defined in class path resource [spring-dao.xml]: Could not resolve matching
constructor (hint: specify index/type/name arguments for simple parameters to avoid type
ambiguities)
关键是蓝色部分,蓝色部分已经给出了提示:不匹配的构造器,这种错误出在 spring 配置中,使
用 namedParameterJdbcTemplate 时出的错,错误出在下面:
<bean id="namedParameterJdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate"
/>
</bean>
正确写法:
<bean id="deptDaoImpl" class="www.csdn.spring.jdbc.DeptDaoImpl">
<property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate"
/>
</bean>
由于对该类不理解或者复制时容易出这样的错误
17. 错误十七
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'localSessionFactoryBean' defined in class path resource [spring-hibernate.xml]: Invocation of init
method failed; nested exception is org.hibernate.HibernateException: 'hibernate.dialect' must be
set when no Connection available
Caused by: org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type '$Proxy5 implementing cn.itcast.service.IEmployeeService,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised' to required type 'cn.itcast.dao.IEmployeeDao' for property 'employeeService'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [$Proxy5 implementing cn.itcast.service.IEmployeeService,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [cn.itcast.dao.IEmployeeDao] for property 'employeeService': no matching editors or conversion strategy found
这种错误一般是 employeeServuce 那里的私有变量出错了
的同学们共勉一下。
1. 错误一
Error creating bean with name 'helloServiceImpl' defined in class path resource [springservice.xml]: Error setting property values; nested exception is
org.springframework.beans.NotWritablePropertyException: Invalid property 'helloDao' of bean
class [www.csdn.spring.service.impl.HelloServiceImpl]: Bean property 'helloDao' is not writable
or has an invalid setter method. Does the parameter type of the setter match the return type of the
getter?
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property
'helloDao' of bean class
这类错误是:一般都是创建了一个 dao 的 spring 文件比如 spring-dao 有创建了一个 service 的
spring 文件,在 spring-service.xml 中引用 dao 的中定义的 id 名,导致的错误,疏忽是: 写
service 实现类的时候忘记了写对应 dao 的 setter 方法,即所谓的依赖注入
比如:
private HelloDao helloDao;
//set 依赖注入很重要,不写会报错,不能读写 helloDao 这一属性
publicvoid setHelloDao(HelloDao helloDao) {
System.out
.println("控制反转:应用程序本身不在负责创建 helloDao 对象,而是由 spring 容器负责创
建、管理、维护,这样控制权转移,称为反转。 "
+ "可以通过依赖注入方式注入该 HelloDao 对象");
this.helloDao = helloDao;
}
2. 错误二
Configuration problem: Failed to import bean definitions from relative location [springdao.xml]Offending resource: class path resource [spring.xml]; nested exception is
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 9 in XML
document from class path resource [spring-dao.xml] is invalid; nested exception is
org.xml.sax.SAXParseException: Open quote is expected for attribute "{1}" associated with an
element type "scope".
Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 9 in
XML document from class path resource [spring-dao.xml] is invalid; nested exception is
org.xml.sax.SAXParseException: Open quote is expected for
Caused by: org.xml.sax.SAXParseException: Open quote is expected for attribute "{1}"
associated with an element type "scope".
这种错误是马虎的错误,在对应的 spring 的配置文件中, bean 标签的 scope 属性忘了加引
号,在配置文件中国不会报错,但是在运行的时候就会出这样的错,一般导致错误的原因
是复制的时候疏忽了引号,直接将原来的引号覆盖了,导致了最后该属性没有引号。
<bean id="helloDaoImpl" class="www.csdn.spring.dao.impl.HelloDaoImpl"
scope="prototype"></bean>
错误的写成:
bean id="helloDaoImpl" class="www.csdn.spring.dao.impl.HelloDaoImpl"
scope=prototype></bean>
3. 错误三
No bean named 'helloServiceImp' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition
这种报错但是没有 Caused by 语句的错误一般都是使用的时候单词写错了,这里写错的地
方是在 java 类中,类中引用 id 的时候写错了单词;比如这里的错,注意下面的红色文字:
HelloService helloService2 = (HelloService)
context.getBean("helloServiceImp",HelloServiceImpl.class);
<bean id="helloServiceImpl" class="www.csdn.spring.service.impl.HelloServiceImpl" sco
pe="singleton" lazy-init="false">
<property name="helloDao" ref="helloDaoImpl"/>
</bean>
眼尖的哥们估计都看出来了这两个单词写的不一样,获取 bean 的方法中引用的 id 少写了
一个“i”,导致 spring 容器在读取的时候不能识别。以后注意细心就好。
4. 错误四
Error creating bean with name 'helloServiceImpl' defined in class path resource [springservice.xml]: Cannot resolve reference to bean 'helloDaoImp' while setting bean property
'helloDao'; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named
'helloDaoImp' is defined
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named
'helloDaoImp' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition
这种也是单词写错的情况,与上面不同的是这种情况给出了 Caused by 语句,让你更清楚
错误发生的原因,英文还差不多的哥们或者有一定编程经验的人员一看 Caused by 语句就
应该能判断出什么错误;这里错误原因明显才、指出每一个名字为'helloDaoImp'的 bean,
或名字为'helloDaoImp'的 bean 未定义,这种错也好好找,一般都是互相引用的 spring 配置
文件马虎出的错,下面一个例子说明:比如 spring-service.xml 引用 spring-dao 的时候,还
是如上面说的一样,重点再红色字体
Service 配置文件中这么写:
<bean id="helloServiceImpl" class="www.csdn.spring.service.impl.HelloServiceImpl" sco
pe="singleton" lazy-init="false">
<property name="helloDao" ref="helloDaoImp"/>
</bean>
但是 dao 配置文件中却这么写:
bean id="helloDaoImpl" class="www.csdn.spring.dao.impl.HelloDaoImpl"
scope="prototype"></bean>
写到这大家就清楚了吧,与上一个错误基本上一样,都是单词写错的错误,只不过不同的
是上一个错误是在 java 类中引用 id 的时候写错单词出的错,而这一个错误是在 spring 配置
文件中国引用 id 出的错,万变不离其宗,错误的额原因都是单词写错,今后细心即可。
5. 错误五
Cannot find class [www.csdn.spring.dao.imp.HelloDaoImpl] for bean with name
'helloDaoImpl' defined in ServletContext resource [/WEB-INF/applicationContext.xml];
nested exception
isjava.lang.ClassNotFoundException:www.csdn.spring.dao.imp.HelloDaoImpl
Caused by: java.lang.ClassNotFoundException: www.csdn.spring.dao.HelloDaoImpl
错误原因:倒错包了,我的 web 项目 HelloDaoImpl 在 dao.impl 包下而不是 dao 包下。所
以包这样的错,看一下 spring 配置文具店额 classes 标签的值导入的类包名是否正确
6. 错误六
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating
bean with name 'employeeBean' defined in class path resource [spring-constructor.xml]:
Unsatisfied dependency expressed through constructor argument with index 2 of type
[double]: Ambiguous constructor argument types - did you specify the correct bean
references as constructor arguments?
错误原因: bean 实例类中的属性类型与 spring 配置文件中的构造器属性类型不对应所导
致,这种情况多出在使用类型指定构造器参数;比如:
类中属性如下,重点注意红色部分:
private String name;
private String sex;
private doublesalary;
spring 配置文件中的构造器标签
<constructor-arg type="java.lang.String" value="杨凯" />
<constructor-arg type="java.lang.String" value="男" />
<constructor-arg type=" java.lang.Double" value="5000.00" />
这种错误是因为构造器中的 type 属性不会自动对应拆箱装箱属性类型,简单点说就是类中
使用的是基本数据类型,配置文件中对应的 type 属性值就要是基本数据类型;类中使用的
是类类型,配置文件中对应的 type 属性值就要是包名加上类类型;
还有一种原因就是不对应的原因, constructor-arg 直接写错了,比如:
private doublesalary;对应了<constructor-arg type=" Double" value="5000.00" />
或者顺序不对的情况下回出现赋值错误,比如同时存在两个相同类型的属性, name 应该
为“杨凯”,如果 sex 在配置文件的位置与 name 的颠倒了,会出现 name=“男”的情况
7. 错误七
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'memberBean' defined in class path resource [spring-construtor.xml]: Initialization of bean failed;
nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to
convert property value of type 'java.lang.String' to required type
'www.csdn.spring.constructor.Member' for property 'member'; nested exception is
java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type
[www.csdn.spring.constructor.Member] for property 'member': no matching editors or conversion
strategy found
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert
property value of type 'java.lang.String' to required type 'www.csdn.spring.constructor.Member'
for property 'member'; nested exception is java.lang.IllegalStateException: Cannot convert value
of type [java.lang.String] to required type [www.csdn.spring.constructor.Member] for property
'member': no matching editors or conversion strategy found
错误原因:这种情况是一个 bean 实例引用另一个 bean 实例对象,而引用的那个 bean 实例
对象为空,但是在改 bean 实例的配置文件中又错误指明空值。举个例子说明:
<bean id="memberBean" class="www.csdn.spring.constructor.MemberBean">
<!-- value="null" 这里给 value 赋的是一个空字符串,而不是一个 null 空值 -->
<property name="name" value="null"/>
<property name="member">
<null/>
</property>
</bean>
关键看红色部分,红色部分是正确的写法,这样写引用空值对象才不会报错,但是如果你
像上面引用 nam 属性那样指明 value=“null”就会出现改错。
8. 错误八
错误一:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration
problem: Bean name 'deptBean' is already used in this <beans> element
Offending resource: class path resource [spring-byType.xml]
错误二:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with
name 'empBean' defined in class path resource [spring-byType.xml]: Unsatisfied dependency
expressed through bean property 'deptBean': : No qualifying bean of type
[www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but found 2:
deptBean,deptBean1; nested exception is
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of
type [www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but found
2: deptBean,deptBean1
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying
bean of type [www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but
found 2: deptBean,deptBean1
这两种错误原因:都是 spring 配置文件中自动装配按 byType 时出的问题,配置文件, 红色部
分为错误的解释和导致错误的原因如下:
<bean id="compBean" class="www.csdn.spring.autowire.CompBean">
<property name="name" value="DELL"/>
</bean>
<bean id="deptBean" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="销售部门"/>
</bean>
<!--
这里只能出现一个 deotBean,id 名不一样但是类型一样,都是 deptBean 实体的;
id="deptBean"或同类型的不同 id 都会抛异常
<bean id="deptBean1" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="销售部门"/>
</bean> -->
<!-- 使用 autoWrie 自动装配,改属性值 byType;
按类型自动装配,前提是同一个类型的只能有一个-->
<bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="byType">
<property name="name" value="杨凯"/>
<!-- <property name="comp" ref="compBean"/>
<property name="dept" ref="deptBean"/> -->
</bean>
9. 错误九
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with
name 'empBean' defined in class path resource [spring-byConstructor.xml]: Unsatisfied
dependency expressed through constructor argument with index 0 of type
[www.csdn.spring.autowire.DeptBean]: : No qualifying bean of type
[www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but found 2:
deptBean1,deptBean2; nested exception is
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of
type [www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but found
2: deptBean1,deptBean2
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying
bean of type [www.csdn.spring.autowire.DeptBean] is defined: expected single matching bean but
found 2: deptBean1,deptBean2
错误原因: spring 配置文件中自动装配按 constructor 时出的问题,配置文件, 红色部分为错
误的解释和导致错误的原因如下:
<!-- 在 spring3.2 以上版本中:使用构造器自动装配时,如果有一个 id 与 bean 实例中的属
性名相同的配置 bean 存在,虽然构造器自动装配是按类型自动装配的,
但是即使有多个相同类型的 bean 存在也不受影响;受影响的情况是:没有与 bean 实例中
的属性名相同的配置 bean 存在,
又有多个相同类型的 bean 配置,就会抛异常-->
<bean id="deptBean" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="销售部门"/>
</bean>
<bean id="deptBean1" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="销售部门"/>
</bean>
<bean id="deptBean2" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="销售部门"/>
</bean>
<!-- 使用 autoWrie 自动装配,改属性值 constructor;构造器自动装配就是按类型自动装配
beam 实例中必须结合构造器使用,如果没有构造器自动装配后注入不进去值,取出为空
值-->
<bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="constructor
"> <
property name="name" value="杨凯"/>
<!-- <property name="comp" ref="compBean"/>
<property name="dept" ref="deptBean"/> -->
</bean>
10. 错误十
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration
problem: Unexpected failure
during bean definition parsing
Offending resource: class path resource [spring-collection.xml]
Bean 'collectionBean'; nested exception is
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: <property> element for property 'users' must specify a ref or value
Offending resource: class path resource [spring-collection.xml]
Bean 'collectionBean'
-> Property 'users'
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: <property>
element for property 'users' must specify a ref or value
Offending resource: class path resource [spring-collection.xml]
Bean 'collectionBean'
-> Property 'users'
乍一看,有些许没有头脑,但是放下心仔细看看,提示说什么 users 属性怎么怎么滴;还
有一点提示就是说是 spring-collection.xml 配置文件中的错误,这就好找,找到改配置中
有关 users 的地方,
<bean id="u1" class="www.csdn.spring.collection.set.User">
<property name="name" value="杨凯" />
<property name="age" value="22" />
</bean>
。。。。。
这样的代码肯定不会出错了,如果是这里的错报的就不是这个错了,可能就是第一条或第
二条错了;再找下一块有 users 的地方,找到了这里:
<!-- list 集合 -->
<property name="users">
<!-- <array>
<ref bean="u1" />
<ref bean="u2" />
<ref bean="u3" />
</array> -->
<!-- <list>
<ref bean="u1"/>
<ref bean="u2"/>
<ref bean="u3"/>
</list> -->
<!-- 还可以通过 spring 自带的 sehema 约束中的 util 工具约束的 list 集合遍历-->
<util:list>
<ref bean="u1" />
<ref bean="u2" />
<ref bean="u3" />
</util:list>
</property>
仔细一看真是这里的错,红色部分最开始忘了写,注释掉了上面的 list 注入值的方式,后
面的 uti 标签注入值有没有写,这是在测试类中取值遍历的时候就会遍历一个空的 users,
这是因为是没有注入值的错,所以没有报空指针的错,报的是这种莫名其妙的错。
11. 错误十一
org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named
'proxyFactoryBean' must be of type [www.csdn.spring.advice.SayServiceImpls], but was actually
of type [$Proxy4]
这种错误一般出在 aop 面向切面的编程中,spring 面向切面的代理有两种,一种是 jdk 动态代
理,一种是 cglib 代理;这是你在使用的的使用如果混合时候就会出现上面的错;这两种代理的
区别是前者是接口代理,就是返回一个接口类型对象,而后者是类代理,不能返回接口类型对
象只能返回类类型对象,如果返回接口了同样会出这样的错。
还有可能出错的地方就是对应的 spring 配置文件,这
里是最容易马虎出错的地方,仔细检查一下的你的目标对象,比如: <!-- 目标对象 -->
<property name="target">
<ref bean="sayServiceImpls"/>
</property>
这里在引用 bean 的时候可能引入错误,可能会引入 jdk 动态代理的目标类,也有可能你的
目标类中实现了某些接口,不符合 cglib 代理的理念;还有可能马虎出错的地方:
<!-- 真实主题 目标对象 -->
<bean id="sayServiceImpls" class="www.csdn.spring.advice.SayServiceImpls"></bean>
真实对象的 id 和 class 属性设置错误的时候也会出错。
12. 错误十二
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'proxyFactoryBean' defined in class path resource [spring-advice.xml]: Error setting property
values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested
PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property
'proxyInterfaces' threw exception; nested exception is java.lang.IllegalArgumentException:
[www.csdn.spring.proxy.advice.SayServiceImpl] is not an interface
Caused by: org.springframework.beans.PropertyBatchUpdateException; nested
PropertyAccessExceptions (1) are:PropertyAccessException 1:
org.springframework.beans.MethodInvocationException: Property 'proxyInterfaces' threw
exception; nested exception is
java.lang.IllegalArgumentException: [www.csdn.spring.proxy.advice.SayServiceImpl] is not an
interface
这个问题很好解决,最关键的问题出在红色部分,原因是在 spring 相关配置文件中设置抽
象主题的时候,既然是抽象主题就应该设置成接口,而不应该是实现类。比如下面的代
码,注意红色部分:
<!--抽象主题 实现接口 -->
<property name="proxyInterfaces">
<array>
<value>www.csdn.spring.proxy.advice.SayServiceImpl</value>
</array>
</property>
正确的写法应该是:
<!--抽象主题 实现接口 -->
<property name="proxyInterfaces">
<array>
<value>www.csdn.spring.proxy.advice.SayService</value>
</array>
</property>
13. 错误十三
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'proxyFactoryBean': FactoryBean threw exception on object creation; nested exception is
org.springframework.aop.framework.AopConfigException: Unknown advisor type class
www.csdn.spring.proxy.advice.AuditableImpl; Can only include Advisor or Advice type beans in
interceptorNames chain except for last entry,which may also be target or TargetSource; nested
exception is org.springframework.aop.framework.adapter.UnknownAdviceTypeException:
Advice object [www.csdn.spring.proxy.advice.AuditableImpl@1f758500] is neither a supported
subinterface of [org.aopalliance.aop.Advice] nor an [org.springframework.aop.Advisor]
Caused by: org.springframework.aop.framework.AopConfigException: Unknown advisor type
class www.csdn.spring.proxy.advice.AuditableImpl; Can only include Advisor or Advice type
beans in interceptorNames chain except for last entry,which may also be target or TargetSource;
nested exception is
org.springframework.aop.framework.adapter.UnknownAdviceTypeException: Advice object
[www.csdn.spring.proxy.advice.AuditableImpl@1f758500] is neither a supported subinterface of
[org.aopalliance.aop.Advice] nor an [org.springframework.aop.Advisor]
这个错误即红色部分提示的错误,不知道 advice 类型的异常,说白了就是编写的 spring
通知的错误,这种错误比较常见,也是出于马虎的错误,比如前者通知、后置通知、环绕
通知、异常通知、引入通知等这几个通知中的任何一个通知类忘了写继承的父类;以下列
出这几个通知的类编写所继承的类:
前置通知:
public class BeforeAdvice implements MethodBeforeAdvice
后置通知:
public class AfterAdvice implements AfterReturningAdvice
环绕通知:
public class AroundAdvice implements MethodInterceptor
异常通知:
public class ThrowAdvice implements ThrowsAdvice
引入通知:
public class AuditableImpl extends DelegatingIntroductionInterceptor implements Auditable
14. 错误十四
java.lang.ClassCastException:
$Proxy10 cannot be cast to www.csdn.spring.proxy.advice.Auditable
java.lang.ClassCastException:
$Proxy11 cannot be cast to www.csdn.spring.proxy.advice.Auditable
像以上这个出现$ProxyXX cannot be cast to www.csdn.spring.proxy.advice.Auditable;什
么代理不能强转成某一个类型的错误,一般都是在使用 JDK 动态代理或 cglib 代理的时候
出现的错误,错误原因有:
1) .JDK 动态代理与 cglib 代理混淆,比如使用 cglib 代理时不能实现接口,你可能在使用
的时候使用了 cglib 代理,但是却实现了接口,如果你在 spring 配置文件中使用 aspectjs
来进行通知,又想使用 cglib 接口那么你需要做的是目标类不实现接口, spring 配置文件中
配置 aop 的时候加上下面红色部分。
<aop:aspectj-autoproxyproxy-target-class="true"/>
2)同样是使用 aspectjs 通知的时候,尤其是使用引入通知的时候,一定不要忘了让引用
通知的业务类加上注解@Aspect;还要注意的是你使用的引入目标类和其实现接口的类路
径一定要正确,我这里就范了一个小错误,到错包的错:
package www.csdn.spring.proxy.advice.aspectjs;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.DeclareParents;
@Aspect
publicclass AuditableService {
@DeclareParents(value="*..*Service*", defaultImpl = AuditableImpl.class)
public Auditable auditable;
}
我在使用 Auditable 接口的时候倒错了包,这里其实类都在同一包下,根本不用倒包,但
是我从上一个包中复制代码的时候自动给我引入了上一个包的 Auditable 类;以后一定要
注意了
15. 错误十五
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration
problem: <aspect> tag needs aspect bean reference via 'ref' attribute when declaring advices.
Offending resource: file [F:\csdn-study\MyWorkspace\springHelloJava\bin\springpojoXmlAspectjs.xml]
Aspect: ref=''
这个错误顾名思义,这里已经提示的很清了,这里列出这个错误是对那些对 pojo-xml 配置
通知不太熟悉的同学而言;这个错误就是在对应的 spring 配置文件中使用 aop 切面的时候
忘写了一个 ref 熟悉的错,具体案例代码如下,注意下面的红色部分,错误就出在红色部
分忘了写 ref="adviceService":
<!-- 使用 pojo-xml aspectjs 配置自动代理 -->
<aop:config>
<!-- 配置切面 -->
<aop:aspect ref="adviceService">
<!-- 引入通知 -->
<aop:declare-parents types-matching="*..*Service*"
implement-interface="www.csdn.spring.proxy.advice.aspectjs.pojoxml.Auditable"
default-impl="www.csdn.spring.proxy.advice.aspectjs.pojoxml.AuditableImpl" />
<!-- 切面切入的位置切入点,可以同时写多个不同的切入点 -->
<aop:pointcut expression="execution(* www.csdn..UserServiceImpl.save(..))"
id="myPcut" />
<aop:pointcut expression="execution(* www.csdn..UserServiceImpl.update(..))"
id="myPcuts" />
<!--织入通知 method:指明方法; pointcut-ref 引入切入点 -->
<aop:before method="beforeMethod" pointcut-ref="myPcut" />
<aop:after method="afterMethod" pointcut-ref="myPcut" />
<aop:around method="aroundMethod" pointcut-ref="myPcuts" />
</aop:aspect>
</aop:config>
16. 错误十六
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'deptDaoImpl' defined in class path resource [spring-dao.xml]: Could not resolve matching
constructor (hint: specify index/type/name arguments for simple parameters to avoid type
ambiguities)
关键是蓝色部分,蓝色部分已经给出了提示:不匹配的构造器,这种错误出在 spring 配置中,使
用 namedParameterJdbcTemplate 时出的错,错误出在下面:
<bean id="namedParameterJdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate"
/>
</bean>
正确写法:
<bean id="deptDaoImpl" class="www.csdn.spring.jdbc.DeptDaoImpl">
<property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate"
/>
</bean>
由于对该类不理解或者复制时容易出这样的错误
17. 错误十七
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'localSessionFactoryBean' defined in class path resource [spring-hibernate.xml]: Invocation of init
method failed; nested exception is org.hibernate.HibernateException: 'hibernate.dialect' must be
set when no Connection available
Caused by: org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type '$Proxy5 implementing cn.itcast.service.IEmployeeService,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised' to required type 'cn.itcast.dao.IEmployeeDao' for property 'employeeService'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [$Proxy5 implementing cn.itcast.service.IEmployeeService,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [cn.itcast.dao.IEmployeeDao] for property 'employeeService': no matching editors or conversion strategy found
这种错误一般是 employeeServuce 那里的私有变量出错了
相关推荐
ysoserial是一个用于生成利用不安全的Java对象反序列化的有效负载的概念验证工具。它包含一系列在常见Java库中发现的"gadget chains",可以在特定条件下利用执行不安全的反序列化操作的Java应用程序。ysoserial项目最初在2015年AppSecCali会议上提出,包含针对Apache Commons Collections(3.x和4.x版本)、Spring Beans/Core(4.x版本)和Groovy(2.3.x版本)的利用链
1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2530上运行,如果是其他型号芯片,请自行移植。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
**Oracle 10g DBA学习手册:安装Oracle和构建数据库** **目的:** 本章节旨在指导您完成Oracle数据库软件的安装和数据库的创建。您将通过Oracle Universal Installer (OUI)了解软件安装过程,并学习如何利用Database Configuration Assistant (DBCA)创建附加数据库。 **主题概览:** 1. 利用Oracle Universal Installer (OUI)安装软件 2. 利用Database Configuration Assistant (DBCA)创建数据库 **第2章:Oracle软件的安装与数据库构建** **Oracle Universal Installer (OUI)的运用:** Oracle Universal Installer (OUI)是一个图形用户界面(GUI)工具,它允许您查看、安装和卸载机器上的Oracle软件。通过OUI,您可以轻松地管理Oracle软件的安装和维护。 **安装步骤:** 以下是使用OUI安装Oracle软件并创建数据库的具体步骤:
消防验收过程服务--现场记录表.doc
数据库管理\09-10年第1学期数据库期末考试试卷A(改卷参考).doc。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
职业暴露后的处理流程.docx
Java Web开发短消息系统
项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7
这是一款可以配置过滤目录及过滤的文件后缀的工具,并且支持多个项目同时输出导出,并过滤指定不需要导出的目录及文件后缀。 导出后将会保留原有的路径,并在新的文件夹中体现。
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
YOLO算法-挖掘机与火焰数据集-7735张图像带标签-挖掘机.zip
操作系统实验 Ucore lab5
IMG_5950.jpg
竞选报价评分表.docx
java系统,mysql、springboot等框架
1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2530上运行,如果是其他型号芯片,请自行移植。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
内容概要:本文详细讲解了搜索引擎的基础原理,特别是索引机制、优化 like 前缀模糊查询的方法、建立索引的标准以及针对中文的分词处理。文章进一步深入探讨了Lucene,包括它的使用场景、特性、框架结构、Maven引入方法,尤其是Analyzer及其TokenStream的实现细节,以及自定义Analyzer的具体步骤和示例代码。 适合人群:数据库管理员、后端开发者以及希望深入了解搜索引擎底层实现的技术人员。 使用场景及目标:适用于那些需要优化数据库查询性能、实施或改进搜索引擎技术的场景。主要目标在于提高数据库的访问效率,实现高效的数据检索。 阅读建议:由于文章涉及大量的技术术语和实现细节,建议在阅读过程中对照实际开发项目,结合示例代码进行实践操作,有助于更好地理解和吸收知识点。