gpt4 book ai didi

java - Spring Bean 的真正功效如何

转载 作者:行者123 更新时间:2023-12-02 01:22:18 25 4
gpt4 key购买 nike

我是 Spring 新手,我正在尝试理解基本概念。从我的角度来看,一个重要的概念是 spring bean,在这里我在完全理解它们方面遇到了一个问题,因为来自互联网的资源将旧的 java 代码(EJB)与 spring 注释混合在一起,对我来说,不太清楚什么是绝对必要的。

例如,我试图了解 Autowiring 在如下基本示例中的工作原理:

@Component("fooFormatter")
class FooFormatter {
public String format() {
return "foo";
}
}

class FooService {
@Autowired
private FooFormatter fooFormatter;

public void print() {
System.out.println(fooFormatter.format());
}
}

public class App{
public static void main(String [] args) {
FooService fo = new FooService();
fo.print();
}
}

我明白,主要是我正在创建一个不由 spring 容器管理的新对象,但对象类型是 FooServiceFooFormatter 而我不'不明白为什么不起作用。
再说一遍,如果我使用spring注解,是否需要添加一个bean配置文件?我知道这是一个虚拟问题,如果您知道一些详细解释这一点的好资源,请将其留在这里(直到现在我还没有找到一些资源来澄清这一点)。

谢谢

最佳答案

为了让 Spring 在 FooService 中注入(inject)一些东西,FooService 也应该是一个可管理的 bean。否则Spring怎么会知道呢?它基本上查找由其注释标记的类。如果一个类没有,比如说,@Component 注释,Spring 将不会管理该类。

使用

注释服务
@Service
class FooService {

创建一个ApplicationContext

ApplicationContext context = ...;

并请求一个bean

FooService service = context.getBean(FooService.class);

Spring 不是一个神奇的工具。 FooService fo = new FooService(); 不会对其产生任何影响。应该在某个时候创建​​一个 Spring 上下文,它将注册要管理的类,并且您将能够查询托管 bean。

阅读:

docs.spring.io/spring/docs/current/spring-framework-reference是我读过的最好的文档之一。阅读“核心”部分。

关于java - Spring Bean 的真正功效如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57475051/

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