Java Spring3@autowire解释?

Java Spring3@autowire解释?,java,spring,Java,Spring,我一直在学习Spring3的教程 但我对spring3的自动连线功能有一个疑问 如果您查看站点提供的示例代码,它在setUserService方法之前使用了@Autowired。 现在我有几个问题 这是使用autowire的标准吗??也就是说,创建一个接口,实现它的方法,然后在控制器类中使用接口类的setter方法 如果我以这种方式使用autowire,我会得到什么好处 使用autowire的替代代码是什么 .1。这是使用autowire的标准吗??也就是说,创建一个接口,实现它的方法,然后在

我一直在学习Spring3的教程

但我对spring3的自动连线功能有一个疑问

如果您查看站点提供的示例代码,它在
setUserService
方法之前使用了
@Autowired
。 现在我有几个问题

  • 这是使用autowire的标准吗??也就是说,创建一个接口,实现它的方法,然后在控制器类中使用接口类的setter方法

  • 如果我以这种方式使用autowire,我会得到什么好处

  • 使用autowire的替代代码是什么

  • .1。这是使用autowire的标准吗??也就是说,创建一个接口,实现它的方法,然后在控制器类中使用接口类的setter方法

    是的,这或多或少是一种标准方式,但这只是一种惯例。认为这是一个糟糕的做法。Spring没有以任何方式强制执行它(但是,如果不使用接口,您可能会被迫将CGLIB添加到依赖项中)

    .2。如果我以这种方式使用autowire,我会得到什么好处

    我不知道你这样说是什么意思,但仅列举几个好处:更容易的测试、解耦、更少的基础架构代码

    .3。使用autowire的替代代码是什么


    同样,很难说替换代码是什么意思。还有很多其他技术:您可以使用XML、
    @Configuration
    @Resource
    @Inject
    、(可能很少有其他AT)、构造函数注入、字段注入、setter注入(教程中的一种),直接从
    BeanFactory
    中查找Springbean

    谢谢你的回复。如果我以这种方式使用autowire,我会得到什么好处?我的意思是参考link中给出的示例,“那样”意味着创建一个接口,实现它并使用setter方法。。3.使用autowire的替代代码是什么?我的意思是,如果没有spring,我将如何实现上述代码。。一个新问题:前面提到的示例使用了autowire,您还提到了其他注释,如@config。哪种方法最好?autowire是实现的最佳方式吗?@vipul12389:Ad.2:许多人使用界面将契约与实现分离,使将来切换实现更容易。然而,其他人发现额外的接口只是一个噪音(参见上面的链接)。公元3年。没有春天。。。您必须手动执行此操作:-)。新问题:目前我更喜欢混合使用
    @Autowired
    @Configuration
    。这真的取决于你,春天给了你自由。好的,谢谢,你已经回答了我几乎所有的问题。但还有一个小问题是,你说我需要手动操作,那么你能发布autowwire如何手动工作的代码吗?@vipul12389:这就是Spring/Guice/CDI的全部要点-你不必做任何事情。如果没有SpringDI,您必须自己按照正确的顺序创建所有对象并注入它们。DI容器为您处理了大量工作。由于此讨论有点太长,请发布另一个问题来描述您的问题。别忘了在这里贴一个后续链接,这样我就可以找到它了。