ioc为控制反转,通常我们使用new来实例化一个对象,使用spring框架后,我们将对象的实例化过程交给spring 容器,容器管理这些对象,维护对象与对象之间的关系,并且为对象注入它所依赖的资源(装配)。
目前项目中通常使用自动检测bean和使用注解装配bean的方式。为了配置spring的自动检测,需要在配置文件中增加:<context:component-scan> 该元素会扫面所有指定的包以及子包,并查找出能够自动注册为spring bean的类,该元素还具有<context:annotation-config>元素的功能,启动使用注解来装配bean的功能。
默认情况下<context:component-scan> 会查找使用stereotype注解所标注的类,这些特殊注解如下:
@Component 通过注解,表示该类为spring组件
@Controller 标识该类为spring mvc Controller
@Service 标识该类为服务类
@Repository 标识该类为数据仓库
使用spring自带的@Autowired注入依赖的bean,可以标注在属性、方法、构造器等多个地方,用的比较多的是标注在属性上,同时@Qualifier限定器来限定依赖,因为如果一个接口有多个实现,那在自动装配时候可能会出现多个可以匹配的bean,这时候可以配合@Qualifier使用指定特定的bean。
@Autowired
@Qualifier("guitar")
private Instrument instrument;
还有一个使用比较多的注解@Value,它可以注入表达式,通常用这种方法装配配置文件中的值。
@Value("")
private String song;
参考 《spring in action》
网友评论