• Spring 中Ioc(控制反转) 用例 迎客


    IoC全名Inversion of Control,中文称“控制反转”。和AOP一样,是Spring的核心技术。

    这里举个例子,这说明一下IoC的应用。

    接口 UserDao.java:

    1 package com.springdemo.dao;
    2
    3  public interface UserDao {
    4 public void save(String name,String password);
    5 }

    类 UserDaoImplForMysql.java:

    代码
    1 package com.springdemo.dao;
    2
    3  public class UserDaoImplForMysql implements UserDao {
    4
    5 public void save(String name, String password) {
    6 System.out.println("UserDaoImplForMysql.....");
    7 }
    9 }

    类 UserDaoImplForOrcle.java:

    代码
    1 package com.springdemo.dao;
    2
    3  public class UserDaoImplForOrcle implements UserDao {
    4
    5 public void save(String name, String password) {
    6 System.out.println("UserDaoImplForOrcle...");
    7 }
    9 }

    客户端类 Client.java:

    代码
    1 package com.springdemo.client;
    2
    3  import com.springdemo.dao.UserDaoImplForMysql;
    4  import com.springdemo.manager.UserManagerImpl;
    5
    6 public class Client {
    7 public static void main(String[] args) {
    8 UserManagerImpl userManager = new UserManagerImpl();
    9 userManager.setUserDao(new UserDaoImplForMysql());
    10 userManager.save("pxl", "pxl123");
    18 }
    19 }

    这里,如果想改用UserDaoImplForOrcle.java类,必须修改客户端代码。

    下面引入IoC这重新实现客户。

    配置Spring容器 bean.xml:

    代码
    1 <beans xmlns="http://www.springframework.org/schema/beans"
    2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    3 xmlns:util="http://www.springframework.org/schema/util"
    4 xsi:schemaLocation="http://www.springframework.org/schema/beans
    5 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    6 http://www.springframework.org/schema/context
    7 http://www.springframework.org/schema/context/spring-context-3.0.xsd
    8 http://www.springframework.org/schema/util
    9 http://www.springframework.org/schema/util/spring-util-3.0.xsd">
    10
    11 <bean id="UserDaoImplForMysql" class="com.springdemo.dao.UserDaoImplForMysql" />
    12 <bean id="UserDaoImplForOrcle" class="com.springdemo.dao.UserDaoImplForOrcle" />
    13 <bean id="UserManagerImpl" class="com.springdemo.manager.UserManagerImpl">
    14 <property name="userDao" ref="UserDaoImplForMysql"/>
    15 </bean>
    16
    17  </beans>

    修改客户端类 Client.java:

    代码
    1 package com.springdemo.client;
    2
    3  import org.springframework.beans.factory.BeanFactory;
    4  import org.springframework.context.support.ClassPathXmlApplicationContext;
    5  import com.springdemo.manager.UserManagerImpl;
    6
    7 public class Client {
    8 public static void main(String[] args) {
    9 // UserManagerImpl userManager = new UserManagerImpl();
    10 // userManager.setUserDao(new UserDaoImplForMysql());
    11 // userManager.save("pxl", "pxl123");
    12
    13 BeanFactory fac = new ClassPathXmlApplicationContext("bean.xml");
    14 UserManagerImpl userDao = (UserManagerImpl) fac.getBean("UserManagerImpl");
    15 userDao.save("pxl", "pxl123");
    18 }
    19 }

    这样若想改用UserDaoImplForOrcle.java类,只须配置一下bean.xml文件即可。

  • 相关阅读:
    PHP浮点数引起的四舍五入问题
    几项有用的JQUERY代码
    php5.5新特性之yield理解
    【转】循环、迭代、遍历和递归
    phpexcel导入excel文件报the filename xxx is not recognised as an OLE file错误。
    php缩放gif和png格式透明背景变成黑色的解决方法
    javascript统计输入文本的简易方法
    分享几个实用的jquery工具函数
    thinkphp中ajax技术
    正斜杠与反斜杠
  • 原文地址:https://www.cnblogs.com/pengxl/p/1916252.html
Copyright © 2020-2023  润新知