zoukankan      html  css  js  c++  java
  • 什么是IOC,它的好处是什么

    IOC 即控制反转。将对象的控制权反过来交给spring进行管理。实现了对象与对象之间的解耦合。

    什么是控制?控制权指的是类的对象的创建和使用的权利。 比如A类和B类,在A类中创建B类对象,并调用B类的方法,那么我们称A类有B类的控制权。

    而控制反转即A类将创建的B的操作交给spring来做。A只需要向spring 获取B对象即可。

    它的好处是,对象的构建如果依赖非常多的对象,且层次很深,外层在构造对象时很麻烦且不一定知道如何构建这么多层次的对象,IOC帮我们管理对象的创建,只需要在配置文件里指定如何创建,每一个对象的配置文件都在类编写的时候指定了,所以最外层对象不需要关心深层次对象如何创建的,前人都已经写好了;

    例如:

    定义一个接口ByeService,里面有一个bye方法,并创建两个实现类(中文和英文的),通过spring将对象注入UserAction类中;

    我的目录为(仅供参考):

    1、先写两个实现类;

    ChineseService.java中的代码为:
    package before;
    
    public class ChineseService implements ByeService{
        @Override
        public void sayBye(){
            System.out.println("Today is 520 but I more like play code");
        }
    }
    EnglishService.java中的代码为:
    package before;
    
    public class EnglishService implements ByeService {
        @Override
        public void sayBye(){
            System.out.println("今天是520,但是我更喜欢敲代码");
        }
    }

    2、定义一个接口ByeService,目的是让两个实现类去实现这个接口;

    ByeService.java中的代码为:
    package before;
    
    public interface ByeService {
        void sayBye();
    }

    3、写一个spring配置文件applicationContext.xml;

    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">
    
        <bean class="before.ChineseService" id="chineseService"></bean>
        <bean class="before.EnglishService" id="englishService"></bean>
        <bean class="spring.UserAction" id="userAction">
            <property name="byeService" ref="englishService"></property>
        </bean>
    </beans>

    4、写一个UserAction去测试是否成功;

    UserAction.java中的代码为:
    package spring;
    
    import before.ByeService;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class UserAction {
        private ByeService byeService;
    
        public void bye(){
            byeService.sayBye();
        }
        public void setByeService(ByeService byeService){
            this.byeService=byeService;
        }
    
        public static void main(String[] args) {
            ApplicationContext applicationContext=new ClassPathXmlApplicationContext("/applicationContext.xml");
            UserAction userAction= (UserAction) applicationContext.getBean("userAction");
            userAction.bye();
        }
    }

    测试结果为:

  • 相关阅读:
    cjson库的使用以及源码阅读
    Map集合 把map 集合 转成Set的方法
    JAVA 吃货联盟
    第二本 第六章 接口 采用面向接口编程组装一台计算机
    java 类和对象
    Jdk安装和环境配置
    Spring mvc 同类之间方法的互相跳转 "redirect:/manage/ManageUser";
    关于Mybatis参数传值问题(常用) 个人比较推荐第二种哦,可以减少代码量,唯一要注意的是自己传递的参数个数个顺序就好
    数据库拼接字符模糊查询语句(mybatis中运用(xml文件))
    ExpandableListAdapter实现的三程常用方式
  • 原文地址:https://www.cnblogs.com/xie-qi/p/12926712.html
Copyright © 2011-2022 走看看