升级我的Spring罐后,我得到了以下例外。
org.springframework.web.servlet.DispatcherServlet - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.integration.transformer.HeaderEnricher#4': Cannot create inner bean '(inner bean)' of type [org.springframework.integration.transformer.HeaderEnricher$MessageProcessingHeaderValueMessageProcessor] while setting constructor argument with key [#{partnerHeaderKey}]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#19': Injection of resource dependencies failed; nested exception is java.lang.IllegalArgumentException: Can not set com.follett.fheg.coursemateriallookup.coursematerial.data.dao.PartnerDAO field com.follett.fheg.coursemateriallookup.coursematerial.integration.headerenricher.PartnerHeaderEnricher.partnerDAO to org.springframework.integration.transformer.HeaderEnricher$MessageProcessingHeaderValueMessageProcessor
at org.springframework.beans.factory.support.BeanDefinitionValue Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#19': Injection of resource dependencies failed; nested exception is java.lang.IllegalArgumentException: Can not set com.follett.fheg.coursemateriallookup.coursematerial.data.dao.PartnerDAO field com.follett.fheg.coursemateriallookup.coursematerial.integration.headerenricher.PartnerHeaderEnricher.partnerDAO to org.springframework.integration.transformer.HeaderEnricher$MessageProcessingHeaderValueMessageProcessor
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:306)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:271)
... 40 more
Caused by: java.lang.IllegalArgumentException: Can not set com.follett.fheg.coursemateriallookup.coursematerial.data.dao.PartnerDAO field com.follett.fheg.coursemateriallookup.coursematerial.integration.headerenricher.PartnerHeaderEnricher.partnerDAO to org.springframework.integration.transformer.HeaderEnricher$MessageProcessingHeaderValueMessageProcessor
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:57)
at java.lang.reflect.Field.set(Field.java:657)
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:150)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:303)
... 44 more
从我所读到的内容来看,我需要向我的bean添加@组件
注释和/或在我的应用程序上下文中创建组件-这两种方法都不起作用。它所指的DAO是这样声明的
我正在使用Spring集成,所以在那里定义了bean到自动连接。
<integration:header-enricher>
<integration:header name="#{partnerHeaderKey}" method="getPartner">
<bean class="com.follett.fheg.coursemateriallookup.coursematerial.integration.headerenricher.PartnerHeaderEnricher"/>
</integration:header>
</integration:header-enricher>
任何想法或帮助都很感激!谢谢你。
注意:如果我回到Spring 2.1.4,应用程序运行良好。即使未声明
@组件
或
更新
正如blackpanther在下面提到的,我需要应用程序上下文中的一个元素。我没有提到我有这个
我能够通过使用@Component注释以及修改在上下文中创建bean的方式来解决这个问题。
出于某种原因,当我移动
老路
<integration:header-enricher>
<integration:header name="#{partnerHeaderKey}" method="getPartner">
<bean class="com.follett.fheg.coursemateriallookup.coursematerial.integration.headerenricher.Partner HeaderEnricher"/>
</integration:header>
</integration:header-enricher>
新方法
<integration:header-enricher>
<integration:header name="#{partnerHeaderKey}" method="getPartner" ref="myBean">
</integration:header>
</integration:header-enricher>
</integration:chain>
<bean id="myBean" class="com.follett.fheg.coursemateriallookup.coursematerial.integration.headerenricher.PartnerHeaderEnricher"/>
您可以在组件内部的bean声明顶部指定@Qualifer,如下所示。
@Autowired
@Qualifier("loginService")
private ILoginService loginService;
loginService是应用程序中bean的名称。xml上下文文件。
不完全是这样,仅仅把注释@组件
放进去并不意味着Java类将自动连接其属性。为了有效地使用@Component
注释,必须告诉Spring在哪里查找这些类。这是通过
我想看看这篇文章,因为它可能会对你有所帮助。
我真的需要帮助。我使用JUnit(4.6)和Spring(3.0.5)进行单元测试。当我尝试在测试类中自动连接服务对象时,我得到了一个NoSuchBeanDefinitionException。 JUnit代码: applicationContext-service.xml代码: 错误跟踪: 一些日志:
为了介绍本章内容,我们借用官方文档的一句话, “在基本代码中尽可能减少不安全的代码”(”one should try to minimize the amount of unsafe code in a code base.”)。记住这句话,接着我们进入学习!在 Rust 中,不安全代码块是用于避开编译器的保护策略;具体地说,不安全代码块主要有 4 方面内容: 解引用裸指针 通过 FFI 调用函数
unsafe库徘徊在“类型安全”边缘,由于它们绕过了Golang的内存安全原则,一般被认为使用该库是不安全的。但是,在许多情况下,unsafe库的作用又是不可替代的,灵活地使用它们可以实现对内存的直接读写操作。在reflect库、syscall库以及其他许多需要操作内存的开源项目中都有对它的引用。 unsafe库源码极少,只有两个类型的定义和三个方法的声明。 Arbitrary 类型 官方导出这个
我在Spring+SpringMVC+Hibernate+MySQL web应用程序中的Spring配置有一个问题。Spring无法创建我在Service类中宣布的bean。 下面是Controller类 应用程序-上下文 最后是我的StackTrace 原因:org.SpringFramework.Beans.Factory.BeanCreationException:无法自动连接字段:priv
我正在遵循快速入门指南,但我得到了一个错误 除非说明书遗漏了什么,否则我想我已经把每件事都做得不折不扣了 com.parse.parserequest$ParserequestException:com.parse.parserequest.newTemporaryException(parserequest.java:368)在com.parse.parserequest$2处发生I/O失败。然
请帮我解决这个问题 错误日志: 控制器类: DAO类: 服务等级: Bean配置: 当spring试图创建< code > private UserService UserService时,它的自动连接似乎有问题; bean。作为参考,我检查了这些。 自动连线依赖项的注入失败; 上下文:组件扫描“未绑定 注入自动安装的依赖项失败,而试图访问道bean 这些并没有解决我的问题,因为我的代码中已经有这