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

注:这仅仅是我个人的理解,如有不同意见,请告知……
时间: 2024-10-12 08:53:20

Spring下如何配置bean的相关文章

spring 注解方式配置Bean

概要: 再classpath中扫描组件 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件 特定组件包括: @Component:基本注解,标示了一个受Spring管理的组件(可以混用,spring还无法识别具体是哪一层) @Respository:建议标识持久层组件(可以混用,spring还无法识别具体是哪一层) @Service:建议标识服务层(业务层)组件(可以混用,spring还无法识别具体是哪一层) @Con

Spring入门第一课:Spring基础与配置Bean

1.入门 Spring是简化java开发的一个框架,其中IoC和AOP是Spring的两个重要核心.由于Spring是非侵入性的,通过Ioc容器来管理bean的生命周期,还整合了许多其他的优秀框架,所以极大的简化了我们的开发过程.Spring的核心包括Beans.Core.Context.SpEL.对应的包的文件名形式为spring-expression-4.0.0.RELEASE.jar这样的形式.在进行Spring开发时,我们必须引入这四个核心包和一个日志包,导入Referenced Lib

Spring之XML配置Bean的属性注入

Spring中XML文件配置Bean的简单示例,如下: <bean id="car" class="com.smart.ditype.Car"> <property name="color"> <value>红色</value> </property> </bean> 注:在上述例子中,<property>标签对应的属性类型是基础数据类型,Spring容器会将它的

Spring通过注解配置Bean

@Component: 基本注解, 标识了一个受 Spring 管理的组件@Repository: 标识持久层组件@Service: 标识服务层(业务层)组件@Controller: 标识表现层组件 配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=&qu

spring之在配置Bean时如何关联不同的Bean

Car.java package com.gong.spring.beans; public class Car { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Car [name=" + name + &qu

Spring--通过注解来配置bean【转】

Spring通过注解配置bean 基于注解配置bean 基于注解来配置bean的属性 在classpath中扫描组件 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定的组件包括: [email protected]:基本注解,标识了一个受Spring管理的组件 [email protected]:标识持久层组件 [email protected]:标识服务层(业务层)组件 [email protected]:

Spring--通过注解来配置bean

Spring通过注解配置bean 基于注解配置bean 基于注解来配置bean的属性 在classpath中扫描组件 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定的组件包括: [email protected]:基本注解,标识了一个受Spring管理的组件 [email protected]:标识持久层组件 [email protected]:标识服务层(业务层)组件 [email protected]:

【Spring】IOC之基于注解的配置bean(下)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.@Autowired注解 Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作. 通过 @Autowired的使用来消除 set ,get方法.Spring 通过一个 BeanPostProcessor 对 @Autowired 进行解析,所以要让 @Autowired 起作用必须事先在 Spring 容器中声明 Aut

spring 配置bean

Main(测试方法) public class Main { public static void main(String[] args) { //1.创建Spring 的IOC容器对象: //spring提供了两种IOC容器的实现 //1.BeanFactory:面向spring本身,,(就是底层的东西) //2.ApplicationContext: 面向使用spring框架的开发者,她提供了更多高级特性,是BeanFactory的子接口 // ----ConfigurableApplica