2016-06-29 5 views
1

Gibt es eine Möglichkeit, zwei verschiedene IDs zu verwenden, um auf dieselbe Instanz in einem Spring-Kontext zu verweisen?Gleiche Instanz mit zwei IDs im Frühjahr

Was ich versuche zu finden, ist eine Möglichkeit zum Aliasing der Bean-ID, für einen Singleton-Bereich.

Antwort

2

http://docs.spring.io/autorepo/docs/spring/4.1.3.RELEASE/javadoc-api/org/springframework/context/annotation/Bean.html Bean Namen Abschnitt

das Namensattribut verwendet werden. Beachten Sie auch, dass der Name ein Array von Strings akzeptiert. Dies dient dazu, mehrere Namen (d. H. Aliase) für eine einzelne Bean anzugeben.

@Bean(name={"b1","b2"}) // bean available as 'b1' and 'b2', but not 'myBean' 
public MyBean myBean() { 
    // instantiate and configure MyBean obj 
    return obj; 
} 
1

Sie konnten die @Bean Annotation (Frühjahr 3.0+) mit seinem name Wert verwenden.

Der Name dieser Bean oder, falls Plural, Aliasnamen für diese Bean. Wenn nicht angegeben, ist der Name der Bean der Name der annotierten Methode. Wenn angegeben, wird der Methodenname ignoriert.

public @interface Bean { 
    String[] name() default {}; 
    ... 
} 

Zum Beispiel Ihre Bohne von C Klasse wird als a oder b (aber nicht c) in einem Frühlings-Kontext zur Verfügung steht.

public @Bean(name = {"a", "b"}) C getInstance() { ... }