歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Spring中如何配置Bean

Spring中如何配置Bean

日期:2017/3/1 9:14:53   编辑:Linux編程

本次講述項目背景:

創建Service類,Service下用到dao類。通過在Spring中配置bean,實現在項目啟動時,自動加載這個類

本次只講述配置bean的注意事項,故只給出簡單實例:

創建Service:

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

    public void init(){
          ……
   }
}

在applicationContext.xml下配置bean:

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

當配置結束後,系統一直報錯,報錯信息如下:

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?

經過排查,發現問題原因:

<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類中

注:這僅僅是我個人的理解,如有不同意見,請告知……

Spring中如何配置Hibernate事務 http://www.linuxidc.com/Linux/2013-12/93681.htm

Struts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm

基於 Spring 設計並實現 RESTful Web Services http://www.linuxidc.com/Linux/2013-10/91974.htm

Spring-3.2.4 + Quartz-2.2.0集成實例 http://www.linuxidc.com/Linux/2013-10/91524.htm

使用 Spring 進行單元測試 http://www.linuxidc.com/Linux/2013-09/89913.htm

運用Spring注解實現Netty服務器端UDP應用程序 http://www.linuxidc.com/Linux/2013-09/89780.htm

Spring 3.x 企業應用開發實戰 PDF完整高清掃描版+源代碼 http://www.linuxidc.com/Linux/2013-10/91357.htm

Copyright © Linux教程網 All Rights Reserved