zoukankan      html  css  js  c++  java
  • spring-ioc的学习

    在前面学习了mybatis的时候,我们去掉了dao层,使用mapper层来代替.

    但是程序还是先到控制层,在控制层创建业务层对象,跳转至业务层,在业务层创建SqlSession对象,使用动态代理的方法取得类的mapper对象,通过mapper对象取到特定的方法,去数据库取得数据后一层一层返回,直至传到视图层.

    这里出现了一个问题,那就是各层的依赖太密切了,我要换掉一层都很难.这就是高耦合.如何给他们解开之间的依赖,使之变得独立呢?

    于是出现了springIOC技术,也就是控制反转技术控制是指本来是我们在new对象,变成了spring帮我们生成对象.比如控制层要是想使用业务层的方法,必须要new业务层对象.现在不用了,spring帮我们直接创建.反转是指将创建好的对象返回给调用者的过程

    直接看例子

    要创建学生类对象,已知有三个属性,sid,sname,sage

    在src下创建applicationcontext.xml文件,文件头

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd"
           default-autowire="byName"
    ></beans>

    在beans标签里写bean标签

    在测试类中则是

    直接创建

    ApplicationContext对象,通过这个对象获得需要的对象.好比applicationContext里已经写好了有哪些类,你需要那些就去拿.通过stu,stu1这个名字拿

    带参数的对象的拿法有两种,

    1.构造方法拿,就在bean标签内再加construction-arg,但是pojo的类里必须得有这个构造方法

    2.通过属性的get/set方法拿带参的对象.在bean标签里加<property>标签

    如果需要修改类的属性,直接在配置文件里该就好了.这样就实现了解耦

    但是解耦后的对象彻底的独立了,本来控制层还能调用业务层呢,现在可怎么办?

    干脆一不做二不休,将类的关系也写在配置文件里,怎么样?

    于是我们就有了依赖注入(DI)

  • 相关阅读:
    Jsp数据交互
    java生成验证码
    http状态码
    Java设计模式之单例
    QQ数据库管理
    Mysql中的存储过程,事物
    mysql中约束的添加,修改,与删除
    mysql中定义存储过程
    Mysql中的子查询等操作
    数据库的简单操作
  • 原文地址:https://www.cnblogs.com/waibangma/p/11360968.html
Copyright © 2011-2022 走看看