zoukankan      html  css  js  c++  java
  • 关于Spring的BeanPostProcessor

    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" />


  • 相关阅读:
    【html】页面制作规范文档
    【jquery】blockUI 弹出层
    前端攻城师所要掌握的知识和技能
    【html】edm 邮件制作指南
    【css】教你如何写出高效整洁的 css 代码——css优化
    前端开发神器notepad++以及zen coding神级插件
    百度统计流量研究院——了解互联网行业基本数据分布和趋势
    【css】我的 css 框架——base.css
    通过扩展方法 链式方法 为MVC 3 视图添加验证
    使用正则表达式抓取博客园列表数据
  • 原文地址:https://www.cnblogs.com/xiaoblog/p/4102960.html
Copyright © 2011-2022 走看看