本次讲述项目背景:

创建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下如何配置bean的更多相关文章

  1. 5. Spring 通过 XML 配置 bean (进阶)

    1. 设置 bean 的作用域 当通过 Spring IOC 容器创建 bean 实例的时候,不仅可以完成 bean 的实例化,也可以为 bean 指定特定的作用域,Spring 支持以下 5 种作用 ...

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

    1.入门 Spring是简化java开发的一个框架,其中IoC和AOP是Spring的两个重要核心.由于Spring是非侵入性的,通过Ioc容器来管理bean的生命周期,还整合了许多其他的优秀框架,所 ...

  3. Spring 通过工厂配置Bean

    1.通过静态工厂方法配置Bean 要声明通过静态方法创建的 Bean, 需要在 Bean 的 class 属性里指定拥有该工厂的方法的类, 同时在 factory-method 属性里指定工厂方法的名 ...

  4. 12.Spring通过FactoryBean配置Bean

    为啥要使用FactoryBean: 在配置Bean的时候,需要用到IOC容器中的其它Bean,这个时候使用FactoryBean配置最合适. public class Car { private St ...

  5. Spring通过注解配置Bean

    @Component: 基本注解, 标识了一个受 Spring 管理的组件@Repository: 标识持久层组件@Service: 标识服务层(业务层)组件@Controller: 标识表现层组件 ...

  6. spring 注解方式配置Bean

    Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件特定组件包括: @Component:基本注解,标示了一个受Spring管理的Bean组件 @Respository:标识 ...

  7. Spring IOC实现配置bean和实例

    配置 beans.xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&quo ...

  8. Spring 通过FactoryBean配置Bean

    1.实现FactoryBean接口 import org.springframework.beans.factory.FactoryBean; public class CarFactoryBean ...

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

    Spring通过注解配置bean 基于注解配置bean 基于注解来配置bean的属性在classpath中扫描组件 组件扫描(component scanning):Spring能够从classpat ...

随机推荐

  1. 在 Ubuntu 14.10 中借用 Windows 的字体

    在前一篇随笔中,我详细讨论了字体的分类及用途,也以 Fedora 20 为例,展示了字体配置的思路和方法.我在配置 Fedora 20 系统字体的时候,采用的是一种釜底抽薪的方法,完全抛开了系统原有的 ...

  2. Java Spring mvc 操作 Redis 及 Redis 集群

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...

  3. TODO:数据库优化之分页

    TODO:数据库优化之分页 本文的例子是以MongoDB数据库为准,其它数据库各位也可以举一反三进行优化. 在MongoDB中分页使用 a.skip(n)跳过前n个匹配的文档: b.limit(m)返 ...

  4. C++ std::priority_queue

    std::priority_queue template <class T, class Container = vector<T>, class Compare = less< ...

  5. vue-router疑惑点记录

    以vue-router2.x讲解. 1.定义路由时,某路由对象里同时有component和redirect重定向参数,会怎样处理? 答: 忽略component,直接用redirect的值重定向到新路 ...

  6. EF Code First Migrations数据库迁移

    1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入

    系列目录 前言 为了符合后面更新后的重构系统,文章于2016-11-1日重写 本节重构一下代码,采用IOC控制反转,也就是依赖注入 您可以访问http://unity.codeplex.com/rel ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(59)-BLL层重构

    系列目录 前言:  这应该是本系统最后一次重构,将重构BLL层和Model层.来完全取代代码生成器生成的BLL层和DAL层.完全废掉了代码生成器的DAL,BLL,MODEL层.  全自动生成增,删,改 ...

  9. .NET Core RC2发布在即,我们试着用记事本编写一个ASP.NET Core RC2 MVC程序

    在.NET Core 1.0.0 RC2即将正式发布之际,我也应应景,针对RC2 Preview版本编写一个史上最简单的MVC应用.由于VS 2015目前尚不支持,VS Code的智能感知尚欠火候,所 ...

  10. SQL Server中提前找到隐式转换提升性能的办法

        http://www.cnblogs.com/shanksgao/p/4254942.html 高兄这篇文章很好的谈论了由于数据隐式转换造成执行计划不准确,从而造成了死锁.那如果在事情出现之前 ...