gpt4 book ai didi

java - 无法在 spring boot 中定义 bean

转载 作者:行者123 更新时间:2023-11-29 04:32:22 25 4
gpt4 key购买 nike

我已经定义了一个用@Configuration 注释它的类并定义了方法init 并用注释@Bean 定义了它但是当我尝试使用自动连接访问那个bean 时它给我一个错误application context中的一些bean的依赖关系形成了一个循环:

┌─────┐
| 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;
}

还有我的 Controller 类

 @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));


}

错误

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]
└─────┘

最佳答案

您的依赖项是循环的,这意味着要创建 A,您需要 B,而 B 又需要 A

@Configuration
@EnableAutoConfiguration
public class Appconfig {

public int Sum(int a,int b){

int c=a+b;
return c;
}
}

会起作用,但不是一个好习惯。配置类不应该是@Autowired

在 Spring Boot 中,您可以通过两种方式创建 @Bean。一种是将类定义为 @Bean:

@Bean
public class MyBean {

}

另一种方式是通过方法:

@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}

以上两者都会在创建Context时创建@Bean

关于java - 无法在 spring boot 中定义 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43339443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com