java-spring配置set注入时,properties中的name只能使用先前配置过的bean的id。

问题描述

spring配置set注入时,properties中的name只能使用先前配置过的bean的id。 10C
 <bean id=""EmployeeAction"" scope=""prototype"" class=""com.tw.web.action.EmployeeAction"">           <property name=""employeeDao"" ref=""employeeDao""/>        <property name=""baseDao"" ref=""employeeDao""/>        <property name=""dao"" ref=""employeeDao""/></bean>

以上三种情况:
第一种(employeeDao):可以正确注入
第二种(baseDao):由于配置中有一个id=""baseDao""的抽象bean,所以会报错:baseDao这bean是一个抽象bean。
第三种(dao):根本不进入set中。
先前我一直纳闷为什么name和ref的字符串不一样就不能够正确注入。直到看到第二种配置报的错,才发现name直接就对应了配置中bean的id了。
是这样的:
我的配置中确实存在一个id=""baseDao""的抽象类
但是在注入时,baseDao只是一个属性。相当于:
public void setBaseDao(IEmployeeDao employeeDao){}
我的配置是:

 <property  name=""baseDao"" ref=""employeeDao"" />

那么Spring按理应该是通过ref去找id=""employeeDao""的bean然后注入到setBaseDao中。
但是我遇到的问题是,Spring是通过name去找id=""baseDao""的bean。
另外,

 <property  name=""id"" value=""1"" />

这样的形式也不行。
奇怪的是,配置SessionFactory的时候并没有问题。
刚刚在相关提问中找到一个解决方法:把Struts配置中的class=""类全限定名"",改成Spring配置的bean的id就行了。还是想请问一下有谁知道是什么问题吗?
谢谢各位!

解决方案

spring配置时的bean注入

解决方案二:
抽象的bean无法被实例化的,当然它也不存在idname等属性了,这些是在没学习框架之前就知道的,现在你用设值注入来为一个抽象的类创建对象并初始化,怎么可以呢?

解决方案三:
注入时候 name 和 之前配置的id 是没有关系的,只要是相同的类型就行了。但是你的EmployeeAction 里面的set方法要与name一致

setBaseDao (employeeDao baseDao){ this.baseDao =baseDao;}

解决方案四:

  <property name=""baseDao"" ref=""employeeDao""/>name是写在你类中的名称baseDao,ref是你写在类中名称baseDao对应的bean的id
时间: 2024-08-30 18:14:27

java-spring配置set注入时,properties中的name只能使用先前配置过的bean的id。的相关文章

Java+Spring+MySql环境中安装和配置MyBatis的教程_java

1.MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介      MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型.Map 接口和POJO 到数据库记录.相对Hibernate和Apache OJB等"一站式"ORM解决方案而言,Mybatis 是一种"半自动化"的OR

【spring boot logback】日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么

本篇 将针对[日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么]这一个主题进行探索. 这个测试项目是根据[spring boot]8.spring boot的日志框架logback使用中建立的项目进行测试的 在配置了logback-spring.xml 这个logback自定义的配置文件之后: <?xml version="1.0" encoding="UTF-8"?>

Java Spring中同时访问多种不同数据库

开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中.使用Spring框架时,使用单一数据库是非常容易的,但如果要同时访问多个数据库的话事件就变得复杂多了. 本文以在Spring框架下开发一个SpringMVC程序为例,示范了一种同时访问多种数据库的方法,而且尽量地简化配置改动. 搭建数据库 建议你也同时搭好两个数据库来跟进我们的示例.本文中我们用了PostgreSQL和MySQL. 下面的脚本内容是在两个数据库中

java-web.xml中配置地址信息如何从properties中获取

问题描述 web.xml中配置地址信息如何从properties中获取 现在有一个java项目,其中包含web.xml,还有spring的一些配置文件,比如applicationcontext.xml还有一些jsp文件.现在想在这三类文件中添加一些IP配置,三类文件里面都要用到,想统一进行配置放在properties文件中,如何配置或写程序读取才能实现三种文件都能通过类似${变量名}或函数的方式获取配置值? 解决方案 我觉得你还是把你的需求说出来比较好 感觉你这个问题有点奇怪,不晓得你要达到什么

《Spring攻略(第2版)》——1.2 配置Spring IoC容器中的Bean

1.2 配置Spring IoC容器中的Bean 1.2.1 问题 Spring提供了一个强大的IoC容器来管理组成应用的bean.为了利用容器服务,你必须配置运行于Spring IoC容器中的Bean. 1.2.2 解决方案 你可以通过XML文件.属性文件.注释甚至API来配置Spring IoC容器中的Bean. Spring允许你在一个或者多个bean配置文件中配置bean.对于简单的应用程序,可以在单个配置文件中集中配置bean.但是对于有许多bean的大型应用,你应该根据其功能(例如控

深入浅析java web log4j 配置及在web项目中配置Log4j的技巧_java

在上篇文章给大家介绍了Java log4j详细教程,本文给大家介绍java web log4j配置及web项目中配置log4j的技巧.具体详情请看下文吧. 首先给大家提供log4j.jar下载:http://logging.apache.org/log4j/1.2/download.html 一.java web项目使用log4j 1.在web.xml文件中添加 <!-- 配置log4j --> <context-param> <param-name>webAppRoo

Java Spring MVC 上传下载文件配置及controller方法详解_java

下载: 1.在spring-mvc中配置(用于100M以下的文件下载) <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <!--配置下载返回类型--> <bean class="or

javaweb-下载的银联demo怎么运行java版呀,配置了src/upmp.properties

问题描述 下载的银联demo怎么运行java版呀,配置了src/upmp.properties 在用浏览器测试时,总是显示无法显示网页,如何测试,刚学java,不是很懂

Java Spring的IoC和AOP的知识点速记

Spring简介 Spring解决的最核心的问题就是把对象之间的依赖关系转为用配置文件来管理,这个是通过Spring的依赖注入机制实现的. Spring Bean装配 1. IOC的概念以及在Spring容器中如何进行IOC的操作. IOC:Inversion of Control,控制反转.在Java开发中,IOC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制,这称为控制反转,就是被调用类的实例由原先的调用类控制创建.销毁现在转变成由Spring的容器管理. 2. Spring容器