zoukankan      html  css  js  c++  java
  • spring中反射机制和注入的使用

    http://www.cnblogs.com/andin/archive/2011/04/30/spring.html spring的一大核心概念是注入,

    但是,这存在的一个前提就是类是由spring管理起来的。

    反射是根据className生成一个具体的实例,

    这是一个很实用的思想。

    比如:当我们需要根据传进来的参数的类型,选择具体的实现类时,

    反射机制就能很好的解决问题。

    然而,一般我们使用反射机制,创建的代理类是根据构造函数实例化的。

    而不是从spring容器中注入 。

    这样就会导致一个问题,无法在创建的代理类中实现注入功能。

    当然,如果你一定要使用的话,系统会提示空指针错误。

    这个时候,如果把反射创建的类由spring注入就可以有效的解决这个问题 。

    这样也存在一个问题。

    就是获得spring的ApplicationContext.

    如果我们重新获得一遍的话,

    这样就是对系统资源极大的浪费。

    这样我们可以声明一个静态变量将ApplicationContext保存起来

        // 声明一个静态变量保存
        public void setApplicationContext(ApplicationContext contex)
                throws BeansException {
            MyApplicationContextUtil.context = contex;
        }

    并将其用spring容器管理起来。

    这样的话,我们就可以很轻松的获得ApplicationContext,而不需要消耗太多的系统资源。

    从而,很简单的,

    当我们的实现类全部继承一个相同的接口时,

    我们的接口便可以通过反射初始化。

    从而,创建不同的具体实现类。

    同时,因为所有的类都是通过spring管理起来的。

    很明显,在创建的实现类中也是可以使用spring的注入。

    而不是有空指针错误。

  • 相关阅读:
    xdebug安装教程
    如何查看Linux操作系统的位数
    getconf命令【一天一个命令】
    redis 数据类型详解 以及 redis适用场景场合
    Redis和Memcache对比及选择
    无交换机实现集群网络互联
    性能调优攻略
    Chrome 插件集推荐
    在 Linux 下将 PNG 和 JPG 批量互转的四种方法
    Flashback for MySQL 5.7
  • 原文地址:https://www.cnblogs.com/svennee/p/4080696.html
Copyright © 2011-2022 走看看