我所知道的在spring初始化bean,销毁bean之前的操作有三种方式:

第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

第二种是:通过 在xml中定义init-method 和  destory-method方法

第三种是: 通过bean实现InitializingBean和 DisposableBean接口

直接上xml中配置文件:

<bean id="personService" class="com.myapp.core.beanscope.PersonService" scope="singleton"  init-method="init"  destroy-method="cleanUp">
  
   </bean>

@PostConstruct和 @PreDestroy注解在bean中方法名上即可在初始化或销毁bean之前执行。

实现InitializingBean和DisposableBean接口接口,举例如下:

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.suning.ecif.admin.app.cfg.KeyValueService;
import com.suning.ecif.admin.entity.KeyValue;

/**
 * 配置管理,增加后台对tb9005的jvm缓存配置
 *
 * @author djw
 * @version 1.0 2015-12-01
 */
@Service
public class DBConfigManager implements InitializingBean {
   
    @Autowired
    KeyValueService keyValueService;

private static Logger log = LoggerFactory.getLogger(DBConfigManager.class);

// Config file properties
    private Map<String, String> theProperties = new HashMap<String, String>();

/**
     * {@inheritDoc}
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        init();
       
    }

public void init() {

try {
            List<KeyValue> queryKeyValues = keyValueService.queryKeyValue(null);
            Map<String, String> map = new HashMap<String, String>();
            for (KeyValue keyValue : queryKeyValues) {
                String key = keyValue.getKey() == null ? null : keyValue.getKey().trim();
                String value = keyValue.getValue() == null ? null : keyValue.getValue().trim();
                map.put(key, value);
            }
            theProperties = map;
        } catch (Exception e) {
            log.error("DBConfigManager.init()", e);
        } finally {

}
    }

/**
     * get the Config Value
     *
     * @param key
     *            Config_key
     * @return Config_value
     */
    public String getConfigValue(String key) {
        return theProperties.get(key);
    }

/**
     * get the Config Value, if not exists then return the default value
     *
     * @param key
     *            Config_key
     * @param defaultValue
     *            default_Value
     * @return Config_value or default_Value
     */
    public String getConfigValue(String key, String defaultValue) {
        if ( theProperties.get(key) == null) {
            return defaultValue;
        }
        return theProperties.get(key);
    }

}

实现InitializingBean接口,实现afterPropertiesSet方法,该方法表明是在资源加载完以后,初始化bean之前执行的方法,同样DisposableBean就是在一个bean被销毁的时候,spring容器会帮你自动执行这个方法;

spring的初始化bean,销毁bean之前的操作详解的更多相关文章

  1. Spring实现初始化和销毁bean之前进行的操作,三种方式

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...

  2. Spring源码学习之: 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...

  3. 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...

  4. 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...

  5. spring实战三装配bean之Bean的作用域以及初始化和销毁Bean

    1.Bean的作用域 所有的spring bean默认都是单例.当容器分配一个Bean时,不论是通过装配还是调用容器的getBean()方法,它总是返回Bean的同一个实例.有时候需要每次请求时都获得 ...

  6. Spring学习笔记--初始化和销毁Bean

    可以使用bean的init-method和destroy-method属性来初始化和销毁bean.定义一个Hero类: package com.moonlit.myspring; public cla ...

  7. 在spring容器中定义初始化和销毁bean前所做的操作,有三种方式

    1.使用注解,通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 package com.luoq.test.annotation.init; ...

  8. 三种不同实现初始化和销毁bean之前进行的操作的比较

    Spring容器中的bean是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,常用的设定方式有以下三种: 通过实现 InitializingBean/ ...

  9. Spring事务Transaction配置的五种注入方式详解

    Spring事务Transaction配置的五种注入方式详解 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学 ...

随机推荐

  1. Android 查看内存使用状况

    再看开发过程中,经常要通过内存的使用量来优化程序. 查看应用程序的命令:adb shell procrank 显示如下: PID      Vss      Rss      Pss      Uss ...

  2. 多校4-Walk Out 分类: 比赛 2015-08-02 17:15 21人阅读 评论(0) 收藏

    Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...

  3. 如何在 Eclipse 中连接源码

    1:首先在window 中 打开首选项(preferences) 找到如下java -- 已安装的JRE

  4. JAVA基础知识之IO——对象序列化

    对象序列化 Java对象序列化(Serialize)是指将Java对象写入IO流,反序列化(Deserilize)则是从IO流中恢复该Java对象. 对象序列化将程序运行时内存中的对象以字节码的方式保 ...

  5. ural 1115,搜索

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1115 题意:n个军舰,m个海岸线,各个长度给出,求n个军舰怎么组成这些海岸线. 思路很简 ...

  6. ZENG msgbox仿qq提示

    ZENG.msgbox.show("设置成功!", 4, 2000); ZENG.msgbox.show("服务器繁忙,请稍后再试.", 1, 2000); Z ...

  7. 检索COM类工厂中CLSID为{000209FF-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005

    检索COM类工厂中CLSID为{000209FF-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005 http://blog.csdn.net ...

  8. spark资料

    http://spark.apache.org/docs/latest/programming-guide.html#rdd-operations http://m.blog.csdn.net/art ...

  9. 一致性hash算法——之二

    摘自:http://www.tomkleinpeter.com/2008/03/17/programmers-toolbox-part-3-consistent-hashing/

  10. css做的后台管理页面,不考虑ie8一下的

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...