IOC理论推导改进之后的代码

时间:2020-05-09
本文章向大家介绍IOC理论推导改进之后的代码,主要包括IOC理论推导改进之后的代码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

IOC理论推导改进之后的代码

<?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 id="MysqlImpl" class="com.liqilaing.dao.UserDaoMysqlImpl"/>
    <bean id="DaoImpl" class="com.liqilaing.dao.UserDaoImpl"/>
    <bean id="UserServiceImpl" class="com.liqilaing.service.UserServiceImpl">
        <property name="userDao" ref="MysqlImpl"/>
    </bean>
    <!--
        ref:引用Spring容器中创建好的对象
        value:具体的值,基本数据类型
    -->
</beans>
import com.liqilaing.dao.UserDaoImpl;
import com.liqilaing.dao.UserDaoMysqlImpl;
import com.liqilaing.service.UserService;
import com.liqilaing.service.UserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {
/*

        // 用户实际调用的是业务层,dao层不需要接触
        UserService userService = new UserServiceImpl();

//        ((UserServiceImpl) userService).setUserDao(new UserDaoImpl());
        ((UserServiceImpl) userService).setUserDao(new UserDaoMysqlImpl());
        userService.getUser();

*/
        // 获取ApplicationContext,拿到Spring的容器
        ApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("bean.xml");
        // 需要什么,就直接get
        UserServiceImpl userServiceImpl = (UserServiceImpl) applicationContext.getBean("UserServiceImpl");
        userServiceImpl.getUser();
    }
}

package com.liqilaing.service;

import com.liqilaing.dao.UserDao;
import com.liqilaing.dao.UserDaoImpl;
import com.liqilaing.dao.UserDaoMysqlImpl;

public class UserServiceImpl implements UserService{

//    private UserDao userDao = new UserDaoMysqlImpl();
    private UserDao userDao;

    // set
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    /*
    我们使用一个set接口实现,已经发生了革命性的变化!

    之前,程序员是主动创建对象!控制权在程序员手上!
    使用了set注入之后,程序不再具有主动性,而是变成了被动的接受对象!

    这种思想,从本质上解决了问题,我们程序员不用再去管理对象的创建了.
    系统的耦合性大大降低,可以更加专注的在业务的实现上!这是IOC的原型!
     */

    public void getUser() {
        userDao.getUser();
    }
}

原文地址:https://www.cnblogs.com/liqiliang1437/p/12858955.html