Spring IOC容器 注册bean和注入依赖的方式以及bean对象生命周期

  1. Spring Ioc容器 注册Bean对象的方式:(ioc来实例化,注入依赖关系,管理bean对象)
  1. 利用类注解

 @Controller :

@Service:

@Repository

@Component

@Configuration

常见的就这集中类注解注册Bean对象

  1. 利用方法注解

 @Bean

注意:类注解产生的是单例的Bean对象,方法注解可以产生多个Bean对象

获取Bean对象,利用

传入bean id 就是类名或者方法名,类名的首字母小写

或者传入类的class对象,这个要求ioc容器中只有一个当前类的对象

  1. 装配注入/依赖注入

Bean对象中的属性需要依赖其它的Bean对象 注入到属性中

  一般@Contoller注册的Bean对象中的属性是@Service注册的Bean对象然后其中有包括@Repository注解的类的属性,将service注册的对象注入Controller中,service中注入Repository对象。这些注册到ioc容器中包括装配注入属性都是Springioc容器做的

 一般都是一个Contorller注解的类中完成http请求和响应处理 然后注入Service注解的类对象完成业务逻辑处理,其中service又调用repository处理数据库的crud操作。

实现方式:

  1. 属性注入:把其它的Bean对象注入到自己的成员变量中(利用Autowired注解(自动接线的))

      

  1. 构造注入:利用构造方法注入对应的依赖关系(本质还是属性注入,注入给了构造方法的参数,然后又传递给属性)

      

还可以使用@Resourse注解。@Autowired是Spring框架提供的,Resource是jdk提供的

如果注入的类型在ioc容器中又多个Bean对象,怎么注入?

注入的变量名称可以是对应的bean id值最简单

  1. Bean的作用域

 Bean的五种作用域

默认的scope(范围的意思)是singleton(单例注册表的方式实现) :Bean在ioc 中只有一个实例

prototype(原型的)每次注入的都是新建的对象

request:每次http请求都会创建一个新的bean,适用于webApplicationContext

session:一个会话的范围,一个httpsession定义一个

globalsession:全局的httpsession定义一个bean

  1. Bean的生命周期

1.容器启动,会对非懒加载的bean进行实例化,分配空间。

@Lazy注解标注会将这个类的bean设置为懒加载,启动时不会立即创建实例,需要使用的时候才初始化,可以节省系统启动的时间和资源开销。

2.设置属性。Bean的注入和装配,注入所有的属性。

3.Bean的初始化:

 实现各种Aware通知方法,BeanNameAware,BeanFactoryAware,ApplicationContextAware

第一个会调用setBeanName方法传入该Bean的id就可以获取该Bean id

SetBeanFactory 传入BeanFactory

setApplicationContext 传入ApplicationContext 

如果实现了BeanpostProcessor 接口会调用接口的postProcessBforeInitialzation 方法初始化前置方法

初始化方法:如果有配置的指定的init-method方法,还可以执行@Postconstruct 初始化方法

执行初始化后置方法 BeanPostProcess,接口中的 postprocessAfterInitlzation方法

4.使用bean,对于scope为singleton的bean,springioc只有一份实例,而prototype的bean每次调用都会new新对象,生命周期会交给调用放管理,不是spring容器

5.销毁:容器关闭,如果bean实现了DisposableBean接口,会调用接口的destroy方法

如果有配置的destroy-method方法,会执行配置的方法。

配置方法在配置注解的类中,注册bean对象,完成配置,比如上述的配置了initmethod

和destroymethod

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值