Spring 通过IOC实现对象的管理,而IOC的具体实现,依赖于DI依赖注入对对象的属性进行赋值。
DI 通过配置文件或注解的方式指定对象与对象之间的依赖关系,并依据该依赖关系对对象属性进行赋值。
DI依赖注入的方式:
1) set方法注入:类中的属性必须实现set方法。在bean标签中配置<property> 标签,指定set注入的依赖关系。(在xml配置中使用最多)
2) 构造器注入:类中定义带属性参数的构造方法,在bean中配置<constructor-arg> 配置构造器
3) 注解注入:在spring配置文件中指定开启注解,并在对应的类上添加注解。常用注解有:
a. 扫描bean的注解。相当于在xml中定义<bean>标签
a) @Controller:用于控制层的注解。(整合Struts2/springmvc时,用来标注控制层类)
b) @Service: 用于Service业务逻辑处理层的注解
c) @Repository: 用于Dao层注解
d) @Component :用于其他组件
b. 依赖注入的注解:写在属性上,或对应set方法上
a) @Autowired:spring的注解,按照类型进行注入。
b) @Resource:java提供的注解,默认根据名称注入(指定了name,则根据name,没指定name,则根据属性名),没有对应名称则按照类型注入。
c) @Qualifier:配合@Autowired使用,指定注入对象的名称
c. 其他注解
a) @Scope 指定对象的作用域(创建方式和生命周期)
i. 单例(默认的)singletion
ii. Prototype:多实例(struts2)
iii. Request: bean的生命周期与request请求一致(springmvc)
iv. Session:bean的生命周期与session一致(springmvc)
v. Global Session: application
b) @PostConstruct: 初始化方法 ==>init-method
c) @PreDestory:销毁方法 ==>destory-method
d) @Lazy: 懒加载注解,指定spring容器加载时不去创建该对象。