2017-07-18 3 views
1

Ich verstehe nicht, warum ich keine Konfigurations-Bean brauche, wenn ich die Environment-Schnittstelle verwenden möchte? Zum Beispiel die Umgebungsvariable „Dateiname“ verwenden, die ich zu @Autowired Umwelt haben in meiner KlasseWarum brauche ich keine Konfigurations-Bean für Environment-Schnittstelle

@Autowired 
private Environment env; 

public BigDecimal getRate(String currency, Date rateDate) { 
    fileName = env.getProperty("filename"); 
    System.out.println(fileName); 
    return ... 
} 

Können Sie mir erklären, warum ich in diesem Fall jede Bohne nicht konfigurieren müssen? Wie überprüfe ich Springcode oder Dokumentation, warum genau ich es nicht brauche. Vielen Dank im Voraus

+0

Es ist eines von mehreren speziellen Objekten, genau wie der 'ApplicationContext', den Sie nicht selbst oder den' ResourceLoader' konfigurieren müssen. –

Antwort

3

Alle integrierten ApplicationContext Implementierungen werden mit einer Reihe von vorregistrierten Bean-Definitionen geliefert. Diese sind in der Dokumentation aufgeführt, here:

Sie auch @Autowired für Schnittstellen verwenden können, die gut bekannt sind auflösbaren Abhängigkeiten: BeanFactory, ApplicationContext, Environment, ResourceLoader, ApplicationEventPublisher und MessageSource. Diese Schnittstellen und ihre erweiterten Schnittstellen, wie ConfigurableApplicationContext oder ResourcePatternResolver, sind automatisch aufgelöst, ohne dass eine spezielle Einrichtung erforderlich ist.

Es ist nicht offensichtlich, aber da @Autowired Werke, so hat Bohnen dieser Arten durch ApplicationContext#getBean(..) bekommen. Mit anderen Worten, alle erhalten ihre eigene Bean-Definition. Die Bean-Implementierung hängt vom Typ des zu initialisierenden Kontexts ab.

Verwandte Themen