spring小结一(二)
(2)使用属性setting方法进行注入
* 通过xml的方式注入:
A:简单Bean的注入:
简单Bean包括:包装类型和String
B:引用其它Bean
(3)装配list集合
(4)装配set集合
(5)装配map
(6)装配Properties
6.注解注入
(1)步骤
A.在配置文件中,引入context命名空间(星号的)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
***** xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring- beans-2.5.xsd
***** http://www.springframework.org/schema/context
***** http://www.springframework.org/schema/context/spring-context-2.5.xsd">
B.在配置文件中加入context:annotation-config标签
此配置隐式注册了多个对注释进行解析处理的处理器.
AutowiredAnnotationBeanPostProcessor,
CommonAnnotationBeanPostProcessor,
PersistenceAnnotationBeanPostProcessor,
RequiredAnnotationBeanPostProcessor
注:@Resource注解在spring文档的lib\j2ee\common-annotations.jar
(2)@Autowired
* @Autowired与@Resource区别:
@Autowired默认按类型装配
@Resource默认按名称装配,当找不到与名称匹配的bean时,才会按类型装配.
* @Autowired默认情况下要求依赖对象必须存在,如果允许为null值,可设置它required属性为false
@Autowired(required=false)
private PersonDao personDao; //用于字段上
@Autowired(required=false)
public void setPersonDao(PersonDao personDao){ //用于属性set方法上
this.personDao = personDao;
}
(3)@Qualifier
如果向按名称装配,可以结合@Qualifier注解一起使用.
@Autowired@Qualifier("personDao")
private PersonDao personDao; //用于字段上
@Autowired
public void setPersonDao(@Qualifier("personDao")PersonDao personDao){
this.personDao = personDao;
}
(4)@Resource
* 它也可标注在字段或属性的setter方法上.
* 如果没有指定name属性,会先按照名称寻找依赖对象,如果找不到,会退回到按类型装配,而指定了name属性,则只能按名称装配.
(5)@PostConstruct和@PreDestroy
@PostConstruct:指定bean的初始化方法.
@PreDestroy:指定bean的销毁方法.
7.扫描注入
在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找及维护起来也不太方便.
spring2.5为我们引入了组件自动扫描机制,它可以在类路径底下寻找标注了@Component、@Service、
@Controller、@Repository注解的类,并把这些类纳入进spring容器中管理.
(1) 步骤
* 引入context命名空间,
和注解注入引入的命名空间是一样的.
* 在配置文件中添加context:component-scan标签
其中base-package为需要扫描的包(包含子包)
(2)功能
@