有没有办法使用两个不同的id来引用Spring上下文中的同一个实例?
我试图找到的方法是为单个作用域范围别名bean id。
答案 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上下文中以C
或a
(但不是b
)的形式提供。
c