diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java index 660b421ef7..72d2d4dccc 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java @@ -315,6 +315,16 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp throw new BeanCreationException(mbd.getResourceDescription(), beanName, "'" + beanName + "' depends on missing bean '" + dep + "'", ex); } + catch (BeanCreationException ex) { + if (requiredType != null) { + // Wrap exception with current bean metadata but only if specifically + // requested (indicated by required type), not for depends-on cascades. + throw new BeanCreationException(mbd.getResourceDescription(), beanName, + "Failed to initialize dependency '" + ex.getBeanName() + "' of " + + requiredType.getSimpleName() + " bean '" + beanName + "'", ex); + } + throw ex; + } } } diff --git a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java index 321cf41850..a86b0d0260 100644 --- a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java +++ b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java @@ -957,7 +957,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader // Initialize LoadTimeWeaverAware beans early to allow for registering their transformers early. String[] weaverAwareNames = beanFactory.getBeanNamesForType(LoadTimeWeaverAware.class, false, false); for (String weaverAwareName : weaverAwareNames) { - getBean(weaverAwareName); + beanFactory.getBean(weaverAwareName, LoadTimeWeaverAware.class); } // Stop using the temporary ClassLoader for type matching. diff --git a/spring-web/src/main/java/org/springframework/http/converter/ResourceRegionHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/ResourceRegionHttpMessageConverter.java index 16ce41e905..814be21ba1 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/ResourceRegionHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/ResourceRegionHttpMessageConverter.java @@ -104,7 +104,6 @@ public class ResourceRegionHttpMessageConverter extends AbstractGenericHttpMessa } @Override - @SuppressWarnings("unchecked") protected void writeInternal(Object object, @Nullable Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { @@ -112,6 +111,7 @@ public class ResourceRegionHttpMessageConverter extends AbstractGenericHttpMessa writeResourceRegion(resourceRegion, outputMessage); } else { + @SuppressWarnings("unchecked") Collection regions = (Collection) object; if (regions.size() == 1) { writeResourceRegion(regions.iterator().next(), outputMessage); diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilderTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilderTests.java index 2e96c2f788..29b6868aa2 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilderTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilderTests.java @@ -864,12 +864,14 @@ public class MvcUriComponentsBuilderTests { } } + interface HelloInterface { @GetMapping("/hello/{name}") ResponseEntity get(@PathVariable String name); } + @Controller static class HelloController implements HelloInterface { @@ -877,7 +879,6 @@ public class MvcUriComponentsBuilderTests { public ResponseEntity get(String name) { return ResponseEntity.ok("Hello " + name); } - } }