Spring01-Bean

为什么使用spring(spring好处)

spring是一个开源的轻量级Java开发框架。对于分层架构、解耦开发、框架兼容等方面有很大的优势

  1. 方便解耦,简单开发:spring是一个大工厂,对象的初始化可以交给spring完成,大大改善了硬编码问题。
  2. 面向切面编程(AOP):可以方便实现对程序权限验定等功能
  3. 事务控制:spring支持xml配置事务和注解配置事务,简化了事务操作
  4. spring不排斥各种优秀的开源框架,对多种框架提供支持(Struts2,Hibernate,Mybatis等)

IOC/DI(控制反转/依赖注入):控制反转就是将对象的创建权交给spring,不在手动new对象;依赖注入:对象的属性由spring在对象创建的过程添加进去。IOC和DI是一样的,叫法不同。

什么是Bean

spring工厂(容器)
现在使用的spring工厂是ApplicationContext,所有的Bean都要被它管理,它有两个实现类:ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,他们的区别在于传入配置文件的路径不同,一个是类路径一个是文件路径。

ApplicationContext在启动的时候默认会给每一个类创建一个实例对象,每一个实例对象就是一个Bean,每一个Bean有一个id,一个name,对应一个类实例。通常查找Bean按照id。当我们要用到一个类的时候,就查找Bean从而得到类的实例对象。

Bean作用范围

  1. singleton:默认值,单例模式,共用一个实例对象。
  2. prototype:多例,每次使用创建一个新的对象。
  3. request:web项目中,一个request请求,创建一个新的对象。
  4. session:web项目中,一个用户创建一个新的对象。
  5. globalsession:web项目中,应用在porlet环境,否则相当于session

Bean生命周期

在bean标签中,init-method可以指定初始化执行的方法。destroy-method指定的方法在bean销毁的时候执行,必须是单例模式才生效。
bean的后置处理允许在初始化bean后,对bean做出相应改变,典型应用是:检查bean的正确性或者根据特定的标准更改bean属性。实现bean后置处理需要实现org.springframwork.bean.factroy.config.BeabProcessor接口,在bean初始化后会将bean实例传递给
postProcessBeforeInitialization(Object, String)
postProcessAfterInitialization(Object, String)
生命周期

  1. 通过构造器或工厂方法创建bean实例
  2. 为bean属性设置值或引入其他bean
  3. 将bean实例传递给后置处理器的postProcessBeforeInitialization方法
  4. 调用bean的初始化方法
  5. 将bean实例传递给后置处理的postProcessAfterInitialization方法
  6. 使用bean
  7. 当bean容器关闭时调用bean的销毁方法

Bean如何实现

创建bean的三种方式
构造函数创建
在类里面需要实现构造函数,如果是无参构造函数,可以不写。xml文件中配置。
在这里插入图片描述
静态工厂创建
类里面需要实现一个静态方法获取bean实例。配置文件中需要指定factory-method。
在这里插入图片描述
实例工厂创建
类里面需要实现一个实例方法回去类对象。xml文件里需要定义两个bean,第一个使用无参构造函数方式,第二个需要指定factory-bean和factory-method。
在这里插入图片描述
在这里插入图片描述
beab属性注入方式
构造方法注入
在这里插入图片描述
set方法注入
在这里插入图片描述
对象类型注入
在这里插入图片描述
p名称注入
在这里插入图片描述

spEl方式注入
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值