Spring下如何配置bean

本次讲述项目背景:spring

建立Service类,Service下用到dao类。经过在Spring中配置bean,实如今项目启动时,自动加载这个类session

本次只讲述配置bean的注意事项,故只给出简单实例:app

建立Service:this

public class UserService {
  private UserDao userDao;
  public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
  }

    public void init(){
          ……
   }
}

在applicationContext.xml下配置bean:spa

<bean id="userService" class="com.gcs.service.UserService"
        init-method="init">
        <property name="config" > 
            <ref local="UserDao" />
        </property>
 </bean> 
    
 <bean id="UserDao" class="com.gcs.dao.UserDao">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property> 
 </bean>

当配置结束后,系统一直报错,报错信息以下:code

org.springframework.beans.NotWritablePropertyException:
Invalid property 'config' of bean class []: Bean property 'config' is not writable or has an invalid setter method.Does the parameter type of the setter match the return type of the getter?

通过排查,发现问题缘由:xml

<bean id="userService" class="com.gcs.service.UserService"
        init-method="init">
        <property name="config" >  --此处配置的name,应为userDao;与配置的类的实例名保持一致
            <ref local="UserDao" />
        </property>
 </bean> 
public class UserService {
  private UserDao userDao;   public void setUserDao(UserDao userDao) { this.userDao = userDao;   } public void init(){ ……   } }
个人理解是这样的,在Java中从这个类操做另外一个类,须要实例化,也就是 UserDao userDao=new UserDao();经过new出来的对象userDao来操做这个类,
而Spring经过配置,省去了去手动new,经过配置bean把dao类注入到service类中,但bean也应该符合Java面向对象的规则。
配置的bean中,<ref local="UserDao" /> 指向的是叫作UserDao的bean,至关于指向UserDao类,而<property name="userDao" > 则至关于获取实例化后的对象。
这样就成功的把dao类注入到service类中

注:这仅仅是我我的的理解,若有不一样意见,请告知……
相关文章
相关标签/搜索