码迷,mamicode.com
首页 > 编程语言 > 详细

关于Spring的BeanPostProcessor

时间:2014-11-17 10:28:02      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:io   ar   os   使用   sp   for   文件   on   log   

BeanPostProcessor接口作用是:如果我们需要在Spring容器完成Bean的实例化、配置和其他的初始化前后添加一些自己的逻辑处理,我们就可以定义一个或者多个BeanPostProcessor接口的实现,然后注册到容器中。、

比如如果我们使用spring整合hibernate,我们可以在容器实例化前先加载hibernate的配置文件:

public class MappingFactoryBean implements FactoryBean {
    private static Logger log = LoggerFactory
            .getLogger(MappingFactoryBean.class);

    public Object getObject() throws Exception {
        List<String> configs = ApplicationContext.getContext().getApplication()
                .getMappingConfigs();
        log.debug("************* hibernate configs: " + configs);
        return configs.toArray(new String[configs.size()]);
    }

    public Class<?> getObjectType() {
        return String[].class;
    }

    public boolean isSingleton() {
        return true;
    }
}

 

 

public class MappingAutowiring implements BeanPostProcessor {
    private static Logger log = LoggerFactory
            .getLogger(MappingAutowiring.class);

    private String[] mappingResources;

    public String[] getMappingResources() {
        return mappingResources;
    }

    public void setMappingResources(String[] mappingResources) {
        this.mappingResources = mappingResources;
    }

    public Object postProcessBeforeInitialization(Object bean, String beanName)
            throws BeansException {
        if (bean instanceof LocalSessionFactoryBean) {
            log.debug("============ MappingAutowiring: " + mappingResources);
            ((LocalSessionFactoryBean) bean)
                    .setMappingResources(mappingResources);
        }
        return bean;
    }

    public Object postProcessAfterInitialization(Object bean, String beanName)
            throws BeansException {
        return bean;
    }
}    

beans.xml 配置如下:  

    <bean id="mappingAutowiring"
        class="xx.MappingAutowiring">
        <property name="mappingResources" ref="mappingResources" />
    </bean>
    <bean id="mappingResources"
        class="xx.MappingFactoryBean" />


 

关于Spring的BeanPostProcessor

标签:io   ar   os   使用   sp   for   文件   on   log   

原文地址:http://www.cnblogs.com/xiaoblog/p/4102960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!