gpt4 book ai didi

java - Spring Autowiring 类

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:58:29 31 4
gpt4 key购买 nike

当我们将一个类注释为@Autowired时,它必须是一个接口(interface)还是可以是一个类?

我看到的所有使用Spring的例子,都是使用接口(interface),然后在类上实现。然后使用接口(interface)类型调用具体类上的函数。我们不能简单地将 @Autowired 添加到具体类而不是接口(interface)吗?

我知道程序类似于 JAVA 中的接口(interface)类比,但如果你不依赖于多态性,那么为什么要编写接口(interface)?

最佳答案

不,您不必使用接口(interface),就 Spring 而言,这完全没问题:

@Service
public class FooService {
@Autowired
private FooDao fooDao;
}

或者您甚至可以进行构造注入(inject):

@Service
public class FooService {

private final FooDao fooDao;

public FooService(FooDao fooDao) {
this.fooDao = fooDao;
}
}

通常界面是不合时宜的做法,被每一代人重复。如果不需要,请不要使用它们。如果它们总是只有一个实现或者如果您想模拟这样一个类(现代模拟框架模拟类没有任何问题),则不需要它们。

注入(inject)具体类也没有错,比如上面例子中的FooDao。它具有一些技术意义。代理,但没有什么不能理解的。

关于java - Spring Autowiring 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124595/

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