我一直在阅读Spring 3的教程 http://www.vaannila.com/spring/spring-annotation-controller-1.html
但是我对spring3的autowired功能有一个疑问。
如果您查看网站上提供的示例代码,则会在@Autowired
方法之前使用setUserService
。
现在我有几个问题。
这是使用autowire的标准吗?那就是创建一个接口,实现它的方法,最后在你的控制器类中使用接口类的setter方法。
如果我以这种方式使用autowire,我得到的好处是什么?
使用autowire的替代代码是什么?
答案 0 :(得分:1)
0.1。这是使用autowire的标准吗?那就是创建一个接口,实现它的方法然后最后在你的控制器类中使用接口类的setter方法。
是的,这是或多或少的标准方式,但这只是一个惯例。 Some认为这是一种不好的做法。 Spring没有以任何方式强制执行(但如果不使用接口,可能会被迫将CGLIB添加到依赖项中)。
0.2。如果我以这种方式使用autowire我得到的好处是什么?
不知道那是什么意思,但仅举几个好处:更容易测试,解耦,减少基础设施代码......
0.3。什么是使用autowire的替代代码?
同样,很难说替代代码是什么意思。还有很多其他技术:您可以使用XML,@Configuration
,@Resource
,@Inject
,(可能很少有其他 ats ),构造函数注入,字段注入, setter injection(教程中的那个),直接从BeanFactory
...