spring对bean的管理

1.spring中,bean默认是单例模式singleton。默认加载为lazy-load .

2.lazy-load的时候,bean工厂会把定义信息载入进来,不过仅在显式调用的时候才会去实例化。在spring中配置一个quartz定时任务器的时候,用到了下面的配置:一开始没有把“sfactory”显示的指明为立即加载,导致任务跑不起来。
<? xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
< beans  default-lazy-init ="true" >

    
<!--  spring调度工厂  -->
    
< bean  id ="sfactory"
        class
="org.springframework.scheduling.quartz.SchedulerFactoryBean"
         singleton
="true"  lazy-init ="false" >
        
< property  name ="triggers" >
            
< list >
                
< ref  local ="cronTrigger"   />
            
</ list >
        
</ property >
    
</ bean >

    
<!--  spring触发trigger  -->
    
< bean  id ="cronTrigger"
        class
="org.springframework.scheduling.quartz.CronTriggerBean" >
        
< property  name ="jobDetail" >
            
< ref  bean ="exampleJob"   />
        
</ property >
        
< property  name ="cronExpression" >
            
<!--  run every morning at 6 am  -->
            
< value > 0 0 03 * * ? </ value >
        
</ property >
    
</ bean >


    
<!--  任务实现类  -->
    
< bean  name ="exampleJob"
        class
="org.springframework.scheduling.quartz.JobDetailBean" >
        
< property  name ="jobClass" >
            
< value > com.decentsoft.smmail.mail.task.TrashCatalogClearTask </ value >
        
</ property >
        
< property  name ="jobDataAsMap" >
            
< map >
                
< entry  key ="mailOperationService" >  
                    
< ref  bean ="mailOperationService" ></ ref >  
                
</ entry >  
            
</ map >
        
</ property >
    
</ bean >


</ beans >

3.bean的加载过程:
  1)容器寻找Bean的定义信息,并且将其实例化。
 2)使用依赖注入,Spring按照Bean的定义信息配置Bean的所有属性。
 3)如果实现了BeanNameAware接口,工厂会调用Bean的setBeanName()传给Bean的ID
 4)如果实现了BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身
5)如果有BeanPostProcessor和Bean关联,那么它们的postProcessBeforeInitialzation()会被调用。
6)如果Bean指定了init-method方法,将被调用。
7)如果有BeanPostProcessor和Bean关联,那么它们的postProcessAfterInitialzation()会被调用。

bean的销毁:
1)可以实现DisposableBean接口
2)配置bean时候指定定制的销毁方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值