关于非二进制方法的Spring @Autowire

时间:2017-06-07 10:36:32

标签: java spring autowired

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

@Autowired
public void doSomething(MyType t){
     System.out.println(t);
}
  1. 我将如何调用此方法?喜欢objectReference.doSomething();调用这些方法时不需要参数吗?
  2. 我们何时在非设定方法上使用@Autowire
  3. 有人可以分享一些样品吗?

2 个答案:

答案 0 :(得分:1)

@Target(value={CONSTRUCTOR,METHOD,PARAMETER,FIELD,ANNOTATION_TYPE})
 @Retention(value=RUNTIME)
 @Documented
public @interface Autowired

正如我们从官方文档中看到的那样@Autowired Marks构造函数,字段,setter方法或配置方法,由Spring的依赖注入工具自动装配。 - https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html

但是,Spring怎么会知道你的方法是否是配置方法?当Spring找到@Autowired时,它将尝试查找与方法参数匹配的bean,并将调用该方法。

答案 1 :(得分:1)

spring doc清楚地说,doSomething(<>)可以应用于具有任意名称和/或多个参数的构造函数,字段,Setter和Arbitrary方法。

回答你的问题,想到android:theme="@android:style/Theme.NoTitleBar" 是一个任意的方法,应该由容器调用而不是你自己。 Have a look at this thread