关于spring的applicationContext.xml配置文件的ref和value之自我想法

今天在做SSH的一个项目的时候,因为需要定时操作,所以就再sping里面加入了一个quartz的小定时框架,结果在运行时候,发生了一个小bug.

Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type ‘java.lang.String‘ to required type ‘org.quartz.spi.JobFactory‘ for property ‘jobFactory‘; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.quartz.spi.JobFactory] for property ‘jobFactory‘: no matching editors or conversion strategy found
Caused by: java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.quartz.spi.JobFactory] for property ‘jobFactory‘: no matching editors or conversion strategy found

这是一个非常小的bug,没想到我刚开始却没注意到哪错了.

错误代码:

<property name="jobFactory" value="jobFactory"/>

正确代码:

<property name="jobFactory" ref="jobFactory"/>

看出来了么?将string类型转换成所需要的class类型的转换错误

是value和ref写错了.

理论上,ref是用在,当前xml中先前已经配置了<bean>标签的,由于我的ssh框架使用的是注解开发,所以直接使用注解@Service("jobFactory")里面的jobFactory即可.

在spring配置文件里面,value配置的参数,一般是用在数字,字符串之类的,而不能放对象.而ref是存的是对象的引用!

特以此几年今天所犯的错误.与君共勉.

时间: 2024-12-22 20:20:33

关于spring的applicationContext.xml配置文件的ref和value之自我想法的相关文章

模拟Spring中applicationContext.xml配置文件初始化bean的过程

package com.xiaohao.action; import java.io.File; import java.lang.reflect.Method; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** *

spring applicationContext.xml 配置文件 详解

applicationContext.xml 文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http

[JavaEE] applicationContext.xml配置文件使用合集

配置实例 – 1 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.or

spring的applicationContext.xml如何自动加载

一个web工程自动加载的配置文件只有web.xml,想要加载其他.xml必须在web.xml里面进行配置. 用spring的时候需要一个bean容器来管理所有的bean,所有bean默认是写在applicationContext.xml里的,在web.xml里面是这么设置的, 1 <context-param> 2 <param-name>contextConfigLocation</param-name> 3 <param-value> 4 /WEB-IN

applicationContext.xml 配置文件的存放位置

eb.xml中classpath:和classpath*:  有什么区别? classpath:只会到你的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. 存放位置: 1:src下面 需要在web.xml中定义如下: <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath

web.xml中配置applicationContext.xml 配置文件的存放位置

一.web.xml中classpath:和classpath*:  有什么区别? classpath:只会到你的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. 二.存放位置: 1:src下面 需要在web.xml中定义如下: 1 2 3 4 <context-param> <param-name>contextConfigLocation</param-name> <param-value

spring的applicationContext.xml配置SessionFactory抛异常

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  <property name="dataSource" ref="dataSource"></property>  <property name="hibernateProperties&

eclipse中Spring创建applicationContext.xml后程序却找不到该文件

今天在创建eclipse创建 spring ioc容器后运行示例发现出现了这条错误信息 class path resource [applicationContext.xml] cannot be opened because it does not exist 网上有很多解决办法我都尝试了,比如 1.clean一下project 2.最常见的原因是applicationContext.xml文件创建的位置不对,无法找到class文件,应该将该文件放在src目录下 3.但是我试过后都不行,最后将

spring boot 导入xml配置文件所需注解和禁用自动配置类的注解

导入XML配置 如果您绝对必须使用基于XML的配置,我们建议您仍然从一个@Configuration类开始.然后您可以使用@ImportResource注释来加载XML配置文件. 禁用特定的自动配置类 如果您发现不需要的特定自动配置类正在应用,则可以使用exclude属性@EnableAutoConfiguration来禁用它们,如以下示例所示: import org.springframework.boot.autoconfigure.*; import org.springframework