java - Spring3 @autowire 解释一下吗?

标签 java spring

我一直在浏览 Spring 3 的教程 http://www.vaannila.com/spring/spring-annotation-controller-1.html

但是我对 spring3 的 Autowiring 功能有一个疑问。

如果您查看网站上给出的示例代码,您会发现它在 setUserService 方法之前使用了 @Autowired。 现在我有几个问题。

  1. 这是使用 autowire 的标准吗?即创建一个接口(interface),实现其方法,然后最后在 Controller 类中使用接口(interface)类的 setter 方法。

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

  3. 使用 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/

相关文章:

java - Spring 安全映射

java - liferay spring portal @ResourceMapping 无法触发不同类型的http方法

java - 通过依赖注入(inject)测试优势

java - 需要从 javascript 访问 Java 类变量

java - Hibernate + MSSQL,无法将值 NULL 插入列中

java - 减少 Java 堆大小

java - 从数据库中检索一个值并将其设置为Spring boot中的@Table Name值

java - @Query注解不填充和执行参数

Java 8 Stream distinct 不起作用

java - Java 书中的嵌套 do-while 和 System.in.read() 示例