在Spring中有两个id的相同实例

时间:2016-06-29 12:43:36

标签: java spring

有没有办法使用两个不同的id来引用Spring上下文中的同一个实例?

我试图找到的方法是为单个作用域范围别名bean id。

2 个答案:

答案 0 :(得分:2)

http://docs.spring.io/autorepo/docs/spring/4.1.3.RELEASE/javadoc-api/org/springframework/context/annotation/Bean.html Bean Names 部分

  

可以使用name属性。另请注意,name接受一个字符串数组。这是为了允许为单个bean指定多个名称(即别名)。

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

答案 1 :(得分:1)

您可以使用import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Rx'; export interface IWindow extends Window { webkitSpeechRecognition: any; } @Injectable() export class VoiceRecognitionService { constructor() { /* void */ } /** * Record * @param {string} language - Language of the voice recognition * @returns {Observable<string>} - Observable of voice converted to string */ record(language: string): Observable<string> { return Observable.create((observer) => { const { webkitSpeechRecognition }: IWindow = <IWindow>window; const recognition = new webkitSpeechRecognition(); recognition.onresult = (e) => observer.next(e.results.item(e.results.length - 1).item(0).transcript); recognition.onerror = observer.error; recognition.onend = observer.completed; recognition.continuous = true; recognition.interimResults = true; recognition.lang = language; recognition.start(); }); } } 注释(Spring 3.0+)及其@Bean值。

  

此bean的名称,或者如果是复数,则为此bean的别名。如果未指定,则bean的名称是带注释的方法的名称。如果指定,则忽略方法名称。

name

例如,您的public @interface Bean { String[] name() default {}; ... } 类bean将在Spring上下文中以Ca(但不是b)的形式提供。

c