`
EvanHuang125
  • 浏览: 54096 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring 配置xml注入bean同名异常的问题

    博客分类:
  • J2EE
阅读更多

应用环境:使用了struts2、spring2.5和ibatis等。

问题重现:xml配置文件如下,

	<bean id="logAction" class="packageName.LogAction" scope="prototype">
		<property name="logManager" ref="logManager"/>
	</bean>
	<bean id="logManager" class="packageName.LogManagerImpl" scope="prototype">
		<property name="logDao" ref="logDao"/>	
	</bean>
	
	<bean id="logDao" class="packageName.LogDaoiBatis" scope="prototype">
		<property name="sqlMapClient" ref="sqlMapClient"/>	
	</bean>

由于整个项目中有很多spring配置文件,这里的logManager 在别的地方也有配置,且指定的另外的一个类,在应用启动的时候,还没有报错(我想spring 只是检查,没有真正注入吧,还是有相关配置?),在用到该模块的时候,会报如下错误(大概意思是logAction无法为logManager这个属性注入bean):

Unable to instantiate Action, logAction,  defined for 'queryLogs' in namespace 'ExampleNamespace'Error creating bean with name 'logAction' defined in ServletContext resource beanA.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [$Proxy6] to required type [packageName.log.LogManager] for property 'logManager'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy6] to required type [packageName.log.LogManager] for property 'logManager': no matching editors or conversion strategy found - action - file:/F:/path/strutsConf.xml:9:71

 ps:有些命名空间和文件名做了修改。strutsConf.xml某个模块的struts配置文件。

 

 

用下面配置方式就解决了重名的问题:

<bean id="logAction" class="packageName.LogAction" scope="prototype">
		<property name="logManager">
			<bean class="packageName.log.LogManagerImpl">
				<property name="logDao">
					<bean  class="packageName.log.LogDaoiBatis" scope="prototype">
						<property name="sqlMapClient" ref="sqlMapClient"/>	
					</bean>
				</property>
			</bean>
		</property>	
	</bean>

 

只做个记录,研究的比较浅,有了解的请指教,呵呵 O(∩_∩)O~

分享到:
评论

相关推荐

    SpringIoc注入

    在传统的Spring配置中,依赖注入是通过XML配置文件完成的。例如: ```xml &lt;bean id="service" class="com.example.MyService"&gt; &lt;/bean&gt; &lt;bean id="myDao" class="com.example.MyDao"/&gt; ``` 这里,`MyService`的...

    浅析Spring配置中的classpath:与classpath*:的区别

    Spring 配置中的classpath:与classpath*:的区别是 Spring 框架中一个常见的问题。本文主要介绍了这两种路径的区别、使用场景及注意事项,以帮助读者更好地理解和使用 Spring 配置。 概念解释 classpath:是指 WEB-...

    Spring 容器后处理器

    为了使Spring能够自动识别这个后处理器,通常需要将其配置为一个普通的bean,并且需要使用`ApplicationContext`作为容器,因为`BeanFactory`无法自动识别BeanFactoryPostProcessor。 #### 四、内置的容器后处理器 ...

    spring中bean id相同引发故障的分析与解决

    在这种情况下,即使`beans.xml`先被加载,`beans2.xml`中的`userConfiguration` Bean也会覆盖掉`beans.xml`中的同名Bean,因此在使用`@Autowired`注解注入`UserConfiguration`时,注入的是`beans2.xml`中的配置,而...

    spring学习之路(黑马课程笔记)

    当service需要bean时,在自己的文件下创建setBean(Bean bean)函数,然后在bean.xml中配置对应的property,生成service时spring会自动找到并调用setBean方法,然后生成需要的bean。 IOC反转控制 在Spring框架中,...

    spring注解1

    如果存在多个同名的bean,或者根本不存在匹配的bean,Spring会抛出`BeanCreationException`异常。例如: ```java @Autowired private AccountDao accountDao; ``` 这里,Spring会自动寻找名为`accountDao`的bean并...

    Spring的自动装配Bean的三种方式

    Spring框架的自动装配Bean功能是为了简化配置,使得开发者无需在XML配置文件中显式指定Bean间的依赖关系。本文将详细讲解Spring中自动装配Bean的三种主要方式:byName、byType以及constructor。这些方法帮助Spring的...

    Cannot invoke setId on bean class 'class ' - argument type mismatch - had object

    总之,处理“argument type mismatch”的关键在于理解Spring的依赖注入机制,并仔细检查Bean的定义、依赖注入的配置以及相关的源代码。确保所有类型匹配,并遵循最佳实践,就能有效地避免这类问题。

    Spring属性占位符PropertyPlaceholderConfigurer的使用

    `PropertyPlaceholderConfigurer`是Spring提供的一个Bean工厂后处理器,它的主要任务是在Spring容器初始化Bean时,替换掉XML配置文件中所有`${...}`形式的占位符,将其替换为对应属性文件中的实际值。这使得我们可以...

    Spring和SpringMVC父子容器关系

    Spring的父容器通常由我们的主配置文件(如applicationContext.xml)创建,它包含了整个应用的基础服务,如数据源、事务管理器、服务层bean等。父容器的ApplicationContext可以通过`&lt;import&gt;`标签引入SpringMVC的...

    dwr结合spring使用

    3. **Spring Bean配置**:在Spring的配置文件(如`applicationContext.xml`)中,你需要声明那些将被DWR暴露的Java对象作为Spring Bean。这样,Spring的依赖注入特性可以用于这些对象,确保它们的初始化和生命周期...

    Spring创建Bean的过程

    Spring 创建 Bean 的过程 Spring 框架中,Bean 的创建过程是通过 ApplicationContext 实现的,ApplicationContext 是 BeanFactory 的扩展,提供了更多的功能。下面将详细介绍 Spring 创建 Bean 的过程。 Bean 的...

    spring源码1

    Spring框架是Java应用程序开发中的核心框架,它提供了一种依赖注入(DI)和面向切面编程(AOP)的能力,极大地简化了企业级应用的开发。在本文中,我们将深入探讨Spring框架的核心组件以及初始化过程。 首先,让...

    09-1Spring整合MyBatis.rar

    3. **配置Spring的配置文件**:在`applicationContext.xml`或Spring Boot的配置文件中,引入MyBatis的配置,包括SqlSessionFactoryBean和MapperScannerConfigurer。MapperScannerConfigurer用于扫描指定包下的所有...

    Acegi配置指南

    然后,在Spring的配置文件(如`acegi.xml`)中,需要定义`filterChainProxy` Bean,它定义了过滤器链的顺序和职责: ```xml &lt;bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"&gt; ...

    详解Java的MyBatis框架与Spring框架整合中的映射器注入

    为了将这个映射器与Spring集成,我们需要在Spring的配置文件中创建一个`MapperFactoryBean`,这个Bean将负责实例化并管理映射器。在配置中,我们需要指定`sqlSessionFactory`引用,这是MyBatis的SQL会话工厂,以及`...

    springboot-mybatis项目练习

    首先,SpringBoot的核心特性在于自动配置,它通过`@SpringBootApplication`注解启动Spring Boot应用,并自动配置了一系列的Bean。这个注解包含了`@EnableAutoConfiguration`,`@ComponentScan`和`@Configuration`三...

    springboot 39道面试题.docx

    Spring Boot 不强制使用 XML 配置,而是提倡使用 Java 或 YAML 来配置组件。 1. **Spring Boot 的优点**: - 易于上手:提供了启动器(starters),使得开发者可以快速构建项目。 - 减少配置:基于“约定优于配置...

Global site tag (gtag.js) - Google Analytics