我一直在浏览 Spring 3 的教程 http://www.vaannila.com/spring/spring-annotation-controller-1.html
但是我对 spring3 的 Autowiring 功能有一个疑问。
如果您查看网站上给出的示例代码,您会发现它在 setUserService
方法之前使用了 @Autowired
。
现在我有几个问题。
这是使用 autowire 的标准吗?即创建一个接口(interface),实现其方法,然后最后在 Controller 类中使用接口(interface)类的 setter 方法。
如果我以这种方式使用 autowire,我得到的好处是什么?
使用 autowire 的替代代码是什么?
最佳答案
.1. Is this the standard of using autowire ?? that is create a interface, implement its method and then finally in your controller class use the interface class's setter method.
是的,这或多或少是标准方式,但这只是一个约定。 Some认为这是一种不好的做法。 Spring 不会以任何方式强制执行它(但是,如果您不使用接口(interface),您可能会被迫将 CGLIB 添加到依赖项中)。
.2. if i use autowire in that way what is the benefit i got ?
不知道你所说的那种方式是什么意思,但仅举几个好处:更容易测试、解耦、更少的基础设施代码......
.3. what is the substitute code of using autowire ?
同样,很难说出替代代码是什么意思。还有很多其他技术:您可以使用 XML、@Configuration
、@Resource
、@Inject
(可能还有其他一些at )、构造函数注入(inject)、字段注入(inject)、setter 注入(inject)(教程中的那个)、直接从 BeanFactory 查找 Spring beans...
关于java - Spring3 @autowire 解释一下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8521960/