MVC框架IOC容器与DI的实现(《架构探险》的学习记录)

    mvc模式是现在流行的一种软件设计,将表现层,业务层和控制层划分开来,使得软件结构更加清晰,各层间的耦合度降低,便于各开发单元协同工作。通过ioc容器,进一步实现各层之间的依赖的解耦,可以大大提高程序可配置性,灵活性,便于扩展和维护。

    如何理解并创建一个ioc容器,实现其依赖注入的特性呢?一个ioc容器实际上是一个保存着所有依赖项的集合,也就是所谓的be an的集合,DI的特性其实是容器中依赖项间的关系,即各bean之间的持有关系。容器本身并不知道自己要管理哪些bean,也无法事先将bean准备好,这就需要规定规则,指定容器要管理的bean,以及这些bean存在的位置,通过配置文件来指定这些规则。容器需要有读取配置文件的能力,然后根据配置文件进行bean的管理操作。

public final class ConfigUtil {

    /**
     * @Description  获得基础包路径
     * @Param       []
     * @Return      java.lang.String
     * @Author      takou
     * @Date        2018/4/6
     * @Time        上午11:37
     */
    public static String getBasePackage() {
        return PropUtil.getString(ConfigConstant.BASE_PACKAGE,"org.smartweb");
    }

    /**
     * @Description 获得jsp文件路径
     * @Param       []
     * @Return      java.lang.String
     * @Author      takou
     * @Date        2018/4/6
     * @Time        上午11:37
     */
    public static String getJspPath() {
        return PropUtil.getString(ConfigConstant.JSP_PATH,"/WEB-INF/view/");
    }

    /**
     * @Description 获得资源文件路径
     * @Param       []
     * @Return      java.lang.String
     * @Author      takou
     * @Date        2018/4/6
     * @Time        上午11:38
     */
    public static String getAsset() {
        return PropUtil.getString(ConfigConstant.ASSET,"/asset");
    }

}

    框架启动后,容器通过配置文件指定的基础包名,运行时获得包名下的所有要管理的bean,加入到容器中。此时就需要java的运行时技术:反射了。反射的前提首先要获得类的class文件,通过类加载器加载class文件,然后通过反射创建类的实例bean。

/**
     * @Description  获得类加载器
     * @Param       []
     * @Return      java.lang.ClassLoader
     * @Author      takou
     * @Date        2018/4/4
     * @Time        下午8:19
     */
    public static ClassLoader getClassLoader() {
        return Thread.currentThread().getContextClassLoader();
    }

    /**
     * @Description  加载指定类名的类
     * @Param       [className, isInitialized]
     * @Return      java.lang.Class
     * @Author 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值