spring配置问题
我的StudentAction中通过spring注入sImpl,tomcat启动报创建StudentAction Bean实例错误: org.springframework.beans.InvalidPropertyException: Invalid property 'sImpl' of bean class [action.StudentAction]: No property 'sImpl' found代码如下:
web.xml:
<?xml version="1.0" encoding="iso-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts Examples Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-config.xml
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<filter>
<filter-name>characterEncoding</filter-name>
<filter-class>filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
struts-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>
<form-beans> <form-bean name="studentcourse" type="action.StudentCourseForm" /> </form-beans> <action-mappings> <action path="/aa"> <forward name="success" path="/nihao.jsp"></forward> </action> <action path="/add" name="studentcourse"> <forward name="success" path="/add.jsp"></forward> </action> </action-mappings> <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /> </plug-in>
</struts-config>
applicationContext.xml:
<?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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:test"/>
<property name="user" value="scott"/>
<property name="password" value="zhoubl"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/zhou/Student.hbm.xml</value>
<value>com/zhou/Course.hbm.xml</value>
</list>
</property>
</bean>
<bean id="cImpl" class="daoImpl.ICourseImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean>
<bean id="sImpl" class="daoImpl.IStudentImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!--struts配置-->
<bean name="/aa" class="action.HelloAction"></bean>
<bean name="/add" class="action.StudentAction">
<property name="sImpl" ref="sImpl"></property>
<property name="cImpl" ref="cImpl"></property>
</bean>
</beans>
问题补充
我属性设置为sImpl,方法为setSImpl(***),不也行吧!,但是我改为simpl就行了,我想知道一下其中的原理,希望知道的回答下,谢谢各位的回答!
变量名的第二个字母要小写simpl
注意修改相应的set方法
java.beans.Introspector
spring的反射规范是把属性的第一个字母变成大写,后面的字母它是不管的,
像你的属性名不是正规的第一个单词小写的话,
你的set和get方法,就必须为set[color=red]sImpl[/color]和
get[color=red]sImpl[/color],才能被spring解析