spring配置问题

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>

&lt;form-beans&gt;
    &lt;form-bean name="studentcourse" type="action.StudentCourseForm" /&gt;
&lt;/form-beans&gt;
&lt;action-mappings&gt;
    &lt;action path="/aa"&gt;
        &lt;forward name="success" path="/nihao.jsp"&gt;&lt;/forward&gt;
    &lt;/action&gt;
    &lt;action path="/add" name="studentcourse"&gt;
        &lt;forward name="success" path="/add.jsp"&gt;&lt;/forward&gt;
    &lt;/action&gt;
&lt;/action-mappings&gt;
&lt;controller 
processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/&gt;
&lt;plug-in
    className="org.springframework.web.struts.ContextLoaderPlugIn"&gt;
    &lt;set-property property="contextConfigLocation"
        value="/WEB-INF/applicationContext.xml" /&gt;
&lt;/plug-in&gt;

</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>



问题补充
tangbo530 写道
注意修改相应的set方法

我属性设置为sImpl,方法为setSImpl(***),不也行吧!,但是我改为simpl就行了,我想知道一下其中的原理,希望知道的回答下,谢谢各位的回答!

变量名的第二个字母要小写simpl

注意修改相应的set方法

java.beans.Introspector

spring的反射规范是把属性的第一个字母变成大写,后面的字母它是不管的,

像你的属性名不是正规的第一个单词小写的话,

你的set和get方法,就必须为set[color=red]sImpl[/color]和
get[color=red]sImpl[/color],才能被spring解析