一. 用法1:
public class SimpleMovieLister{
//注解成员变量
@Autowired
private MovieFinder movieFinder;
//注解构造器
@Autowired
public SimpleMovieLister(){
}
//注解setter方法
@Autowired(required=false)
public void setMovieFinder(MovieFinder movieFinder){
this.movieFinder = MovieFinder;
}
}
(注:1.@Autowired 可以对setter方法,构造器,以及成员变量进行注解。
2.默认情况,如果找不到合适的bean(如上的MovieFinder)会导致Autowired失败抛出异常,但是我们可以通过添加required=false(如上的setter方法)来避免。
3.每个类只能有一个被标记为required=true)
二. 用法2:
可以使用Autowired注解那些众所周知的接口如:BeanFactory,ApplicationContext,Evironment,ResourceLoader等。
public class MovieRecommender{
@Autowired
private ApplicationContext context;
public MovieRecommender(){
}
}
三. 用法3:
可以注解需要该类型数组,集合等的方法和字段,目的是提供所有类型的Bean;
private set<MovieCatlog> movieCatlog;
@Autowired
public void setMovieCatlogs(set<MovieCatlog> movieCatlog){
this.movieCatlog = movieCatlog;
}
//or
private map<String,MovieCatlog> movieCatlog;
@Autowired
public void setMovieCatlogs(map<String,MovieCatlog> movieCatlog){
this.movieCatlog = movieCatlog;
}
(注:1.可以通过添加@Order使数组或集合有序
2.@Autowired是由 spring 的BeanPostProcessor处理,所以不能在自定义的BeanPostProcessor中使用@Autowired,如果要使用这些类型,可以同xml或@bean注解加载)