zoukankan      html  css  js  c++  java
  • Struts2学习-Ioc学习-spring

    1、面向对象写法(带着面向过程的思维)
    电脑 computer = new 电脑();
    【电脑代码中 new 打印机()】
    computer.打印文本("hello 140");

    电脑和打印机告诉耦合
    --------------------------------------
    2、改进,电脑类中,不再new 打印机,采用注入方式
    电脑 computer = new 电脑();
    打印机 printer = new 打印机();
    computer.setPrinter(printer);

    把电脑和打印机解耦
    但是,仍然存在一个问题:只有1台打印机,不能换
    --------------------
    3、改进,把打印机设置一个接口,分别添加2个实现类(分别是黑白和 彩色)
    电脑 computer = new 电脑();
    打印机 printer = new 彩色打印机();
    computer.setPrinter(printer);

    好处:切换打印机的时候,无须修改电脑类,
    电脑和打印机彻底解耦

    还有有问题:如果切换打印机,是改代码
    (虽然不用改电脑类、也不要改各个打印机的类,
    但是还是需要改测试调用类)
    -----------------------
    4、引入ioc重要思想:把new一个实现类的控制权,
    从程序员从交出来,交给spring

    在编码过程中,程序员是绝对不知道实现类是谁。
    只要你知道,你已经错了。

    学会:衣来伸手,饭来张口。
    spring给你什么,你就用什么
    --------------------------
    5、改进spring
    (属性的赋值,由代码改为spring注入)

    -------------------------

    http://www.cnblogs.com/xdp-gacl/p/4249939.html

    http://www.cnblogs.com/ITtangtang/p/3978349.html

    -----------------------------------

    图解

    1.新建空项目,配置spring

    <!--配置spring-->
        <!-- spring-context 已经包含了Core,Bean  -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.0.0.RELEASE</version>
        </dependency>
    
        <!-- 和struts结合时,需要web,Struts 2 Spring Plugin 2个东西 -->

    2.测试类

    原本是要写这些代码的

    电脑I computer = (电脑I) context.getBean("computer");
            打印机I printer = (打印机I)context.getBean("printer");
    
            System.out.println(computer);
            System.out.println(printer);
            computer.玩游戏();
            computer.打印文本("hello 140");
    View Code

    但引入spring后

     //1.先拿到一个spring容器
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            //2.拿1台电脑
            电脑I computer = (电脑I) context.getBean("computer");
            computer.打印文本("hello 140");

    3.因为我们有三个class,所以<bean>三个

    <bean id="computer" class="com.nf.test.笔记本电脑">
            <!-- ref="printer2"只要修改这里就可以使用-->
            <property name="printer" ref="printer1"></property>
    
        </bean>
    
        <bean id="printer1" class="com.nf.test.黑白打印机"></bean>
        <bean id="printer2" class="com.nf.test.彩色打印机"></bean>

    地址:https://gitee.com/MuNianShi/ioc-spring.git

  • 相关阅读:
    汽车行业如何利用大数据
    汽车行业如何利用大数据
    Linux下Gcc 的编译过程
    第一个GraphX程序
    VC++ 模拟&quot;CLICK事件&quot;关闭指定窗体
    基于Canvas的Char.js库使用
    VELT-0.1.6开发:载入根文件系统
    HDU 5411 CRB and puzzle (Dp + 矩阵高速幂)
    JavaScript图片裁剪
    C++ string中的几个小陷阱,你掉进过吗?
  • 原文地址:https://www.cnblogs.com/junhua4254/p/7681601.html
Copyright © 2011-2022 走看看