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的注入。

    而不是有空指针错误。

  • 相关阅读:
    小工具之文件整合
    [JavaWeb基础] 031.dom4j写入xml的方法
    AES128_CBC模式加密
    eatwhatApp开发实战(九)
    [Objective-C] 021 KVC、KVO
    eatwhatApp开发实战(八)
    eatwhatApp开发实战(七)
    [Objective-C] 020_ Block
    eatwhatApp开发实战(六)
    年终总结--我的2019
  • 原文地址:https://www.cnblogs.com/svennee/p/4080696.html
Copyright © 2011-2022 走看看