当前位置: 首页 > 知识库问答 >
问题:

非setter方法上的Spring@Autowire

蔡宏大
2023-03-14

我刚刚看到一些示例,其中@Autowire用于非setter方法。

@Autowired
public void doSomething(MyType t){
     System.out.println(t);
}
  1. 我怎么称呼这个方法?像对象eference.do东西();调用这些方法时不需要参数吗?
  2. 我们什么时候在非setter方法上使用@autowire
  3. 有人能分享一些相同的样品吗?

共有2个答案

贾建茗
2023-03-14
@Target(value={CONSTRUCTOR,METHOD,PARAMETER,FIELD,ANNOTATION_TYPE})
 @Retention(value=RUNTIME)
 @Documented
public @interface Autowired

正如我们从官方文档中看到的,@Autowired将构造函数、字段、setter方法或config方法标记为由Spring的依赖项注入工具自动连接。-https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html

但是,spring如何知道您的方法是或不是配置方法呢?当Spring找到@Autowired时,它将尝试找到与方法参数匹配的bean,并将调用该方法。

郎睿
2023-03-14

SpringDoc明确指出,@Autowired可以应用于具有任意名称和/或多个参数的构造函数、字段、setter和任意方法。

来回答你的问题,想想do

 类似资料:
  • 根据@autowiredjavadoc: 将构造函数、字段、setter方法或配置方法标记为由Spring的依赖项注入工具自动生成。任何给定bean类中只有一个构造函数(最大值)可以携带此注释,指示构造函数在用作Spring bean时自动连接。这样的构造函数不必是公共的。字段是在bean构造之后、调用任何配置方法之前注入的。这样的配置字段不必是公共的。配置方法可以有任意名称和任意数量的参数;每个

  • 我需要对setter方法进行一些过滤,并考虑修改它们,例如: 我不记得有任何这样的实现,它可能不合法(或至少不合适)。我是否应该编写名为的附加setter方法,将作为默认值?这种方式似乎不是打破豆子的方法。 第三个选项是像这样准备单独的过滤器类: 我认为这是常用的用法;但是第二种选择似乎更接近面向对象方法。哪种方式是正确的方式?

  • 我正在做运动,我有点困了,需要一些帮助。假设有向图上有以下顶点和边:AB、BC、AD、CD、DC、DE、CE、EB、AE,如下所示 到目前为止,我已经设法通过使用DFS和递归来解决这个问题。我跟踪深度(即距离源有多少边),当深度超过3时,递归函数返回。 我现在想做的是不使用递归来解决它,也就是说,使用堆栈,但我卡住了!如果我使用以下类似的东西(伪代码): 那么我就无法知道每个顶点应该在哪个深度。我

  • 问题内容: 我很好奇知道这样的代码之间有什么区别: 和这样的代码: 问题答案: 要自动装配Bean时使用注释。不限于二传手。它也可以与构造函数和字段一起使用。如果在字段上使用批注,则该字段将自动与具有匹配数据类型的bean连接。 检查是否设置了特定属性。如果某个字段已使用批注注释,并且未设置该字段,则将得到。 编辑:如’kryger’所指出:用注释的字段也是有效的(除非您将其必需的参数显式设置为f

  • 我在用spring做实验,我在看《spring:一个开发者的笔记本》这本书。我得到了这个错误: 原因:org.springframework.beans.factory.BeanCreationException:创建类路径资源[batch-config.xml]中定义的名为“validate file”的bean时出错:设置属性值时出错;嵌套异常为org.springframework.bean

  • 我不明白我做错了什么。我想使用JAXB解封一个xml,但是我注意到没有调用setter方法。我使用Java1.5。Attribute.java类中的Getters和Setters正常工作,但在Configuration.javaclass-Setter方法不调用。你能告诉我我错在哪里吗? 我的XML如下所示: