diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java index a21c0f899e..f95c57cd70 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java @@ -313,10 +313,6 @@ public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBean ". Found constructor with 'required' Autowired annotation already: " + requiredConstructor); } - if (candidate.getParameterTypes().length == 0) { - throw new IllegalStateException( - "Autowired annotation requires at least one argument: " + candidate); - } boolean required = determineRequiredStatus(ann); if (required) { if (!candidates.isEmpty()) { diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/annotation/InjectAnnotationBeanPostProcessorTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/annotation/InjectAnnotationBeanPostProcessorTests.java index f1bea66f2b..63390cb8ca 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/annotation/InjectAnnotationBeanPostProcessorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/annotation/InjectAnnotationBeanPostProcessorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -742,6 +742,15 @@ public class InjectAnnotationBeanPostProcessorTests { bf.destroySingletons(); } + @Test + public void testAnnotatedDefaultConstructor() { + DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); + bf.addBeanPostProcessor(new AutowiredAnnotationBeanPostProcessor()); + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(AnnotatedDefaultConstructorBean.class)); + + assertNotNull(bf.getBean("annotatedBean")); + } + public static class ResourceInjectionBean { @@ -750,7 +759,6 @@ public class InjectAnnotationBeanPostProcessorTests { private TestBean testBean2; - @Inject public void setTestBean2(TestBean testBean2) { if (this.testBean2 != null) { @@ -819,7 +827,6 @@ public class InjectAnnotationBeanPostProcessorTests { public static class TypedExtendedResourceInjectionBean extends ExtendedResourceInjectionBean { - } @@ -1087,7 +1094,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Inject private Map testBeanMap; - public Map getTestBeanMap() { return this.testBeanMap; } @@ -1346,4 +1352,12 @@ public class InjectAnnotationBeanPostProcessorTests { } } + + public static class AnnotatedDefaultConstructorBean { + + @Inject + public AnnotatedDefaultConstructorBean() { + } + } + }