zoukankan      html  css  js  c++  java
  • SSM应用(一)--Spring入门

    Spring是什么

      Spring是一个框架;

      Spring是一个容器框架;

      Spring用于管理bean(Java类),并维护bean(Java类)之间的关系;

      容器框架:整个web都属于Spring来管理,Spring可以管理web层、业务层、dao持久层,每一层都是由Java类(bean)组成的,Spring能够管理所有的bean,并且维护bean之间的关系;

      

    Spring的核心机制

      Bean:

        可以是Java中的任何对象,可以是JavaBean/service/servlet/dao,Spring就是通过管理每一层的bean,来实现管理整个项目。

        Spring可以管理bean的实例化,对象的诞生;

        Spring可以管理对象的关系(类中的对象属性);

      IOC/DI:

        IOC(inverse of control):控制反转

          不用Spring的时候,所有的对象都是new出来的,由我们自己决定什么时候new,控制权在我们自己手上;

          在Spring中,所有的对象都是由Spring来管理的,由Spring决定什么时候创建,控制权在Spring手上;

        DI(dependency injection):依赖注入

          如:web工程中service层与dao层的关系:

          在不用Spring的时候,service依赖于对象属性dao;

          在Spring中,由Spring将dao对象注入到service中,也体现了Spring管理service和dao的关系;

      AOP(aspect onented programming):面向切面编程,面向所有对象编程;

    Spring入门案例

      现在有这样两个类:

        

      实现Spring管理,维护bean的步骤:

        1、引入jar包;

      

        2、配置核心配置文件:applicationContext.xml

      

        3、编写测试类

      

        注意:

        核心配置文件中的id对应创建的对象的对象名;

        在核心类中使用getBean(id)方法得到Spring创建的bean对象;

        在配置对象属性时,需要使用ref属性,ref属性的值对应相应的bean对象配置文件的id;如:

        

      小结:如果我们把程序的发展史比喻成社会的话,就可以分为:

        原始社会:自给自足,需要对象,就自己new一个对象;

        工业社会:工厂,需要对象,由工厂创建出来,找工厂要;

        共产主义社会:Spring容器,容器中存放着配置好的大量的对象,需要的时候无需主动找,Spring会依赖注入;

    Spring的执行机制

      读取application配置文件的时候,Spring框架被加载;

      当不考虑bean的生命周期时,读取application配置文件的时候,Spring中配置的bean被创建;

      

      读取配置文件的时候,bean被实例化并且以键值对的方式放置在Spring容器中

      Spring底层基于Java的反射机制

        读取配置文件:IO

        service = Class.forName(“bean,UserService”).newInstance();  //反射,建立实例

        byeservice = Class.forName(“bean,ByeService”).newIntance();  //反射,建立实例

        service.setSyaService(byeservice); //bean之间关系的建立  //属性的注入

        HashMap.put(“service”,service);HashMap.put(“byeservice”,byeservice);  //把对象放入HashMap中,作为Spring容器,工厂;

    PS:因作者能力有限,如有误还请谅解;

  • 相关阅读:
    闭包
    laravel 控制器
    laravel 模板
    laravel 视图
    laravel 请求
    laravel 分页
    解决启动Apache遇到的问题Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:8888
    一张号称一篇程序覆盖Python基础的代码
    [转载]激活Navicat Premium
    C语言自定义函数的形参为数组时需要注意传入长度
  • 原文地址:https://www.cnblogs.com/WHL5/p/8883942.html
Copyright © 2011-2022 走看看