zoukankan      html  css  js  c++  java
  • Spring下如何配置bean

    本次讲述项目背景:

    创建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入门(六)【springMVC中各数据源配置】
    spring入门(五)【springMVC环境搭建】
    spring入门(四)【面向切面编程】
    spring入门(三)【事务控制】
    json-lib的使用《二》
    Unity 游戏框架搭建 2018(七)命名的力量:变量
    Unity 游戏框架搭建 2018 (六) UI 管理神器 UI Kit
    Unity 游戏框架搭建 2018 (五) 资源管理神器 ResKit
    Unity 游戏框架搭建 2018 (四) 我所理解的框架
    Unity 游戏框架搭建 2018 (三) QFramework 快速入门
  • 原文地址:https://www.cnblogs.com/sky-/p/5585556.html
Copyright © 2011-2022 走看看