日期:2014-05-17  浏览次数:20609 次

spring 类型转换问题
applicationContext.xml里的配置如下

         <bean id="login" class="com.action.LoginAction">
 <property name="employeeService"><ref bean="employeeService"/>  </property>
 </bean>
       <bean id="employeeService" class="com.imp.EmployeeService">
<property name="sessionFactory"><ref bean="sessionFactory"/> </property>
</bean>

对应com.action.LoginAction有如下一个变量
    private EmployeeService employeeService;

其中com.imp.EmployeeService 继承了一个接口
public class EmployeeService  implements EmployeeServiceInter

这样在运行时候系统会报错,说是EmployeeServiceInter格式无法转为EmployeeService   将配置文件里的代码改为如下代码则一切正常。本来被引用的bean类就是EmployeeService而在引用的类里建立一个EmployeeService格式的变量不就可以吗?为什么要在引用的类里建立一个EmployeeServiceInter格式的变量
    
     <bean id="login" class="com.action.LoginAction">
 <property name="EmployeeServiceInter"><ref bean="employeeService"/>  </property>
 </bean>
       <bean id="employeeService" class="com.imp.EmployeeService">
<property name="sessionFactory"><ref bean="sessionFactory"/> </property>
</bean>

对应com.action.LoginAction变量改为
    private EmployeeServiceInter employeeServiceInter;
spring bean class

------解决方案--------------------
面向接口编程。这是IOC的思想。
------解决方案--------------------
因为它优先用动态代理实现注入,动态代理代理类必须有接口。

非要不用接口可以用擦写码方式实现注入,但是配置方法不一样。