一、配置Bean概述
1、配置形式:
①基于xml文件
②基于注解
2、配置方式:
①通过全类名(反射)
②通过工厂方法(静态工厂方法、实例工厂方法)
③FactoryBean
3、依赖注入方式:
①属性注入
②构造器注入
二、Spring配置Bean
1、基于xml、通过全类名(反射)、属性注入配置Bean
2、基于xml、通过全类名(反射)、构造器注入
3、基于xml、通过工厂方法配置
① 通过静态工厂方法配置Bean:
即不需要创建工厂实例就可以创建Bean的实例。
② 通过实例工厂方法配置Bean:
创建工厂实例,通过调用工厂实例的方法创建Bean实例。
4、基于xml,通过FactoryBean配置Bean
5、基于注解配置Bean
① 注解依赖aop包,所以需要导入aop包。
② Spring 能够从 classpath 下自动扫描(需要配置 context:component-scan )具有特定注解的组件。
特定的组件包括:
@Component:基本注解,标识一个受Spring管理的组件。
@Repository:标识持久层组件。
@Service:标识业务层组件。
@Controller:标识控制层组件。
Spring 对扫描到的组件有默认的命名规则:使用非限定类名,第一个字母小写 (也可以使用value属性指定组件的名称)。
③ 配置<context:component-scan>,其中 base-package 属性指定Spring扫描的包,Spring将扫描该包及其所有子包,如有多个包,使用逗号隔开。
④ 可以使用 resource-pattern 来过滤特定的类。
⑤ 使用 <context:exclude-filter> 子节点指定排除哪些类。
⑥ 使用 <context:include-filter> 子节点指定只包含哪些类。
⑦ 使用 @Autowired 注解自动装配Bean。
三、Spring配置Bean的属性
1、Spring Bean配置中的字面值
① 字面值:可用字符串表示的值,可以通过<value>元素标签或value属性进行注入。
② 基本数据类型及其封装类、String等类型都可以采用字面值注入方式。
③ 若字面值包含特殊字符,可以使用<![CDATA[]]>把字面值包裹起来。
2、Bean之间的引用
3、Bean配置集合属性
① 配置List类型属性: Set类似
② 配置Map类型属性:
③ 配置java.util.Properties属性:
④配置独立的集合Bean:
⑤ 使用p命名空间:Spring 从 2.5 版本开始引入了一个新的 p 命名空间
四、自动装配
1、使用 @Autowired 注解自动装配Bean,使用@Autowired注解自动装配具有类型兼容的单个Bean属性。
可以在构造器、普通字段、一切具有参数的方法上使用 @Autowired 注解。
2、默认情况下,当使用 @Autowired 注解的属性,如果在IOC容器中找不到匹配的Bean来装配属性时,会抛出异常。
可以使用 required=false 设置某一属性不被设置(即IOC容器不配置匹配的Bean)。
3、使用@Autowired注解的属性,当 IOC 容器中存在多个类型匹配的 Bean 时,默认情况下会匹配与属性
相同名称的 Bean,若匹配不到则抛出异常。也可以使用 @Qualifier(“Bean名称”) 注解指定注入的Bean。
4、@Autowired也可以用在数组上,Spring会将所有匹配的Bean自动装配进数组。
@Autowired也可以用在集合上,Spring会判断该集合的类型,然后自动装配所有类型兼容的Bean。
@Autowired也可以用在Map上,若key为String类型,Spring将Bean的名称作为key,Bean本身作为值自动装配所有类型兼容的的Bean。
5、也可以使用 @Resource 或 @Inject 自动装配Bean,功能与 @Autowired 类似,建议使用@Autowired注解。