Spring @Autowired auf eine Klasse mit dem gleichen Namen wie die aktuelle Klasse
Sagen, ich habe das unten Klasse in eine Spring-boot-Anwendung:
@Configuration
public class Environment {
@Autowired
org.springframework.core.env.Environment environment;
}
Beim ausführen dieser, den ich bekommen:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field environment in com.example.Environment required a bean of type 'org.springframework.core.env.Environment' that could not be found.
Action:
Consider defining a bean of type 'org.springframework.core.env.Environment' in your configuration.
Disconnected from the target VM, address: '127.0.0.1:57780', transport: 'socket'
Die Problemumgehung zum beheben dieses ist nur zum umbenennen meiner Klasse aus public class Environment
zu public class Environments
Aber ich will nicht zu tun. Wie halten meine Klasse name und auch der Frühling zu erkennen, was ich versuche zu tun?
@Configuration("environments")
statt der Umbenennung Ihrer Klasse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Geben Sie Ihrer Konfiguration einen Namen:
Aus der
@Configuration
docs, übervalue
:Edit :
Und den gleichen Namen verwenden, während autowiring diese Bohne in Ihrer Anwendung mit
@Qualifier
Anmerkung wie unten :Environment
. Ich will es bleiben die gleichen und werden genannt, dass überall und nicht haben, um diesen Wert zu ändern, da ich nicht mit FrühlingEnvironment
überall sonst.@Configuration
statt@Component
?). Die Injektion erfolgt nach Typ (standardmäßig), wenn Sie@Autowired
und nicht durch den Namen (das ist nur ein fallback).können Sie einen bean-Namen für Sie Klasse , und Autowire der neuen Bohne , am Ende sind Sie autowiring, um Bohnen zu Klassen