Closed
Description
Dmitry Katsubo opened SPR-10411 and commented
Overview
The following scenario does not work.
XML
<bean name="mocksControl" class="org.easymock.EasyMock" factory-method="createStrictControl" />
<bean id="transactionOperations"
factory-bean="mocksControl"
factory-method="createMock"
p:class="org.springframework.transaction.support.TransactionOperations" />
<bean id="jdbcOperations"
factory-bean="mocksControl"
factory-method="createMock"
p:class="org.springframework.jdbc.core.JdbcOperations" />
Java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:/my-context.xml")
public class MyTest {
@Autowired
private TransactionOperations transactionOperations;
@Autowired
private IMocksControl mocksControl;
...
}
Trace
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.XXX.transactionOperations; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.transaction.support.TransactionOperations] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
... 41 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.transaction.support.TransactionOperations] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:986)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:856)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:768)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
... 43 more
Analysis
See comments below.
Affects: 3.2.2
Attachments:
- spr-10411.zip (4.88 kB)
Issue Links:
- Infer return type of parameterized static factory methods [SPR-9493] #14127 Infer return type of parameterized static factory methods
- Migrate GenericTypeResolver.resolveReturnTypeForGenericMethod to ResolvableType [SPR-10976] #15604 Migrate GenericTypeResolver.resolveReturnTypeForGenericMethod to ResolvableType
- Introduce FactoryBean to create mock beans with EasyMock [SPR-9130] #13769 Introduce FactoryBean to create mock beans with EasyMock ("supersedes")
Referenced from: commits 8fdc7d4, b913578, b305f00, e86e182, 8b1927f