【问题标题】:@Autowire in Spring春天的@Autowire 【发布时间】:2011-09-25 07:57:10 【问题描述】: 我正在尝试了解如何在 Spring 中使用 Authowire。 看到一个问题here,明白怎么用了。 但是,spring 不是在接口上工作吗? UserService不是必须是接口吗? 【问题讨论】: 标签: spring autowired 【解决方案1】: 不,你没有使用接口,但它会让你在未来的某个时候生活更简单。 唉,就像对未来的所有预测一样,这种假设可能是错误的。在这种情况下,创建和维护接口的努力将被浪费。 此外,现代 IDE 提供了强大的重构功能,可以用接口替换特定类型。 【讨论】: 如果我确定会有一个类实现它们,你是否建议阅读接口? @Odelya:当 Spring 为您的类生成代理时,您将需要接口。比如你有一个服务,使用 Spring 的 AOP 特性引入事务,你的服务类需要一个接口,否则你会得到一个类转换异常。 不一定。 Spring 可以为任何具有空构造函数的非最终类创建 CGlib 代理。 Spring+AspectJ 甚至没有这个限制。 我使用事务注释。 @Ophir - 你的意思是如果我使用事务,我不需要使用接口? @Odelya:正如我所说:您不必使用界面。 如果您需要,用另一个实现替换一个实现只会让事情变得更简单。如果你不需要它,接口除了让你有一种将 API 与实现分开的心态之外没有任何优势。