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

    注:这仅仅是我个人的理解,如有不同意见,请告知……

  • 相关阅读:
    实现斐波那契数列的三种方式
    [LintCode]计算两个数的交集(二)
    [LintCode]计算两个数的交集(一)
    JNI技术概念小结
    require.js的用法
    JavaScript中模块“写法”
    模块化的JavaScript
    javascript如何判断访问网页的设备及是否支持触屏功能
    Javascript自由拖拽类
    JQuery中html()方法的注意事项
  • 原文地址:https://www.cnblogs.com/sky-/p/5585556.html
Copyright © 2011-2022 走看看