JavaSpring【三、Bean】
配置项
- id bean的标识
- class bean的类全名
- scope bean的作用域
- constructor-arg 构造注入
- properties 设值注入
- autowire 装配模式
- lazy-init 是否懒加载
- init-method 初始化方式
- destroy-method 销毁方法
作用域scope
- singleton 单例,一个bean容器中只存在一份,若有多个容器则有多个实例
- prototype 原型模式,每次请求创建新实例,destroy不生效
- request 每个请求创建一个
- session 当前session内有效
- global session 单点情景下,跨系统session
测试singleton和prototype
生命周期
- 定义(实现一个类)
- 初始化
两种方式
1、【常用】实现org.springframework.beans.factory.InitializingBean接口,并覆盖afterPropertiesSet()方法
2、配置init-method
3、全局配置,在beans中配置default-init-method(当某个bean设置了1、2种方式,则全局配置不生效)
- 使用
- 销毁
1、【常用】实现org.springframework.beans.factory.DisposableBean接口,并覆盖destroy()方法
2、配置destroy-method
3、全局配置,在beans中配置default-destroy-method(当某个bean设置了1、2种方式,则全局配置不生效)
自动装配Aware
spring提供了以Aware结尾的接口,实现后可在bean初始化后获取相应资源,可以对其进行操作(因为资源较核心,操作须慎重)
类实现ApplicationContextAware接口,覆盖setApplicationContext方法
配置xml
获取该实例,实现aware接口的类setApplicationContext方法会优先执行,且和使用时的实例是同一个
AutoAwaring
- No 什么都不做
- byName 通过名称,配置后,属性可不用配置,会自动根据名称寻找相应的bean加载(一定要配置bean的id)
- byType 通过类型(class)匹配对应的bean,若未找到,则什么都不做
- Constructor 与byType类似,区别在于它应用与构造器参数,若未找到会异常
Demo
1、只配置bean
2、Test类
3、Service类
4、Dao类
5、RunTest
Resources&ResourceLoader
Resource针对于资源的统一接口
- UrlResource Url对应的资源,根据一个URL地址即可构建
- ClassPathResource 类路径下的资源文件
- FileSystemResource 文件系统里的资源文件
- ServletContextResource 用于访问Servlet环境下的资源
- InputStreamResource 输入流封装资源
- ByteArrayResource 字节数组封装资源
ResourceLoader
所有的applicationContext都会实现该接口
前缀:
- classpath 从classpath中加载
- file 从文件系统中加载
- http 从连接中加载
- (none)