From a32b52555a57167b1d1e38d18d348c62ad2c63ec Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 12 Oct 2016 17:10:29 +0200 Subject: [PATCH] @Primary not marked as inherited anymore Issue: SPR-14780 --- .../context/annotation/Primary.java | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/annotation/Primary.java b/spring-context/src/main/java/org/springframework/context/annotation/Primary.java index b9ffc6037f..d2752b6db2 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/Primary.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/Primary.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 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. @@ -18,26 +18,26 @@ package org.springframework.context.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; -import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Indicates that a bean should be given preference when multiple candidates - * are qualified to autowire a single-valued dependency. If exactly one 'primary' - * bean exists among the candidates, it will be the autowired value. This annotation - * is semantically equivalent to the {@code } element's {@code primary} attribute - * in Spring XML. + * are qualified to autowire a single-valued dependency. If exactly one + * 'primary' bean exists among the candidates, it will be the autowired value. * - *

May be used on any class directly or indirectly annotated with @{@link - * org.springframework.stereotype.Component Component} or on methods annotated - * with @{@link Bean}. + *

This annotation is semantically equivalent to the {@code } element's + * {@code primary} attribute in Spring XML. + * + *

May be used on any class directly or indirectly annotated with + * {@code @Component} or on methods annotated with @{@link Bean}. * *

Example

*
  * @Component
  * public class FooService {
+ *
  *     private FooRepository fooRepository;
  *
  *     @Autowired
@@ -48,6 +48,7 @@ import java.lang.annotation.Target;
  *
  * @Component
  * public class JdbcFooRepository {
+ *
  *     public JdbcFooService(DataSource dataSource) {
  *         // ...
  *     }
@@ -56,23 +57,25 @@ import java.lang.annotation.Target;
  * @Primary
  * @Component
  * public class HibernateFooRepository {
+ *
  *     public HibernateFooService(SessionFactory sessionFactory) {
  *         // ...
  *     }
  * }
  * 
* - *

Because {@code HibernateFooRepository} is marked with {@code @Primary}, it will - * be injected preferentially over the jdbc-based variant assuming both are present as - * beans within the same Spring application context, which is often the case when - * component-scanning is applied liberally. + *

Because {@code HibernateFooRepository} is marked with {@code @Primary}, + * it will be injected preferentially over the jdbc-based variant assuming both + * are present as beans within the same Spring application context, which is + * often the case when component-scanning is applied liberally. * *

Note that using {@code @Primary} at the class level has no effect unless - * component-scanning is being used. If a {@code @Primary}-annotated class is declared via - * XML, {@code @Primary} annotation metadata is ignored, and + * component-scanning is being used. If a {@code @Primary}-annotated class is + * declared via XML, {@code @Primary} annotation metadata is ignored, and * {@code } is respected instead. * * @author Chris Beams + * @author Juergen Hoeller * @since 3.0 * @see Lazy * @see Bean @@ -81,7 +84,6 @@ import java.lang.annotation.Target; */ @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) -@Inherited @Documented public @interface Primary {