Ich habe eine Klasse mit @Configuration Annotated und definierte Methode init und Definierte es mit Annotation @Bean, aber wenn ich versuche, auf diese Bean zugreifen mit Auto-verdrahtet gibt es mir einen Fehler Die Abhängigkeiten von einigen der Bohnen in den Anwendungskontext bilden einen Zyklus:Kann Bean im Frühjahr Boot nicht definieren
┌─────┐
| Sum defined in class path resource [com/example/Application/Appconfig.class]
@Configuration
@EnableAutoConfiguration
public class Appconfig {
@Bean
public int Sum(int a,int b){
int c=a+b;
return c;
}
Und meine Controller-Klasse
@Autowired
Appconfig appconfig;
@PostMapping(value = "/api/{id1}/{id2}")
public void math(@PathVariable int id1,@PathVariable int id2){
appconfig.Sum(id1,id2);
System.out.println(id1);
System.out.println(id2);
System.out.println(appconfig.Sum(id1,id2));
}
Fehler
The dependencies of some of the beans in the application context form a cycle:
┌─────┐
| Sum defined in class path resource [com/example/Application/Appconfig.class]
└─────┘
Es gibt nichts "Korrektes" daran, sowohl '@ Configuration' als auch' @Bohnen' in einer Klasse zu löschen, und es wird in Spring Boot als schlechte Übung angesehen, Beans in der Bootstrap-Klasse der Anwendung zu definieren. (Fügen Sie in sehr kompakten Beispielen eine geschachtelte Klasse hinzu.) – chrylis
@chrylis Ich stimme zu. Ich füge es der Antwort hinzu – xenteros
Eine '@ Konfiguration' ist eine spezielle Bean, die mit' @ Component' (Meta-Annotation) versehen ist. 'AppConfig' ist eine Bean und kann injiziert werden –