gpt4 book ai didi

java - Spring:方法 getBean(String...) 如何根据输入字符串查找 bean?

转载 作者:行者123 更新时间:2023-12-01 16:47:48 25 4
gpt4 key购买 nike

我有以下运行良好的代码:

@SpringBootApplication
public class DiDemoApplication {

public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(DiDemoApplication.class, args);
MyController controller = (MyController) ctx.getBean("myController");
controller.hello();
}
}

@Controller
public class MyController {

public String hello() {
System.out.println("Hello World");
return "foo";
}
}

我删除了导入语句。此代码运行并打印“Hello World”。

我的问题涉及以下行:

MyController controller = (MyController) ctx.getBean("myController");

我了解代码会查找与字符串“myController”关联的 Controller 。但是,我不知道 MyController 类如何链接到任何类型的此类字符串。 Spring如何将类名MyController映射到字符串“myController”?它甚至不是同一个名称(字母“m”在两种情况下都不区分大小写)。

最佳答案

它会找到它,因为你没有指定显式的名称,默认情况下 Spring 将使用类名但以小写字母开头来创建你用 @Controller、@Resource 等注释的 bean。详细信息请参阅文档: https://docs.spring.io/spring/docs/5.0.x/spring-framework-reference/core.html#beans-beanname

如果您命名@Controller(@Controller(value="myBean"),或简单地@Controller("myBean")),那么当您从上下文中获取bean时,您将需要使用该名称。

关于java - Spring:方法 getBean(String...) 如何根据输入字符串查找 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46666294/

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