Spring框架之IOC
来源:互联网 发布:网络总监招聘 编辑:程序博客网 时间:2024/06/06 20:42
为什么使用Spring?
首先说两个概念:耦合性、侵入性。耦合性是指:类与类之间的关系,耦合性强说明类之间的依赖关系强;侵入性是指:在更改框架时,需要更改大量的代码,即侵入性高。
一个项目中,一个类要依赖其他类来完成自己的操作,我们往往采用new这个类的对象来调用它的方法,这样就造成了两个类的依赖关系太强。改一个地方往往牵扯很多类,牵扯大量的代码。
Spring框架,管理对象与对象之间的依赖关系。我们不需要自己创建对象,将其交给容器进行管理。这个容器就是IOC。
如何理解IOC思想?
IOC相当于房屋中介,对象相当于房子。当我们需要房子居住时,只需将条件告诉房屋中介,就会得到想要的房子。
DI:在系统运行中,IOC会动态的像某个对象提供其需要的对象,这一点是通过依赖注入实现的。
如何实现Spring IOC?
IOC容器:是对象配置在里面的xml文件,通过Spring的工厂类进行解析,采用Java反射机制创建对象。
关键配置:1必须将被管理的对象配置到Spring配置文件中;2必须定义构造函数或者setter方法,让Spring将对象注入进来;
1配置applicationContext.xml
<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-3.2.xsd"> <bean id="userDao4MySqlImpl" class="com.bjsxt.spring.dao.UserDao4MySqlImpl"/> <bean id="userDao4OracleImpl" class="com.bjsxt.spring.dao.UserDao4OracleImpl"/> <bean id="userManager" class="com.bjsxt.spring.manager.UserManagerImpl"> <!-- 构造方法注入 <constructor-arg ref="userDao4OracleImpl"/> --> <!-- setter方法注入 --> <property name="userDao" ref="userDao4OracleImpl"/> </bean></beans>
2注入的类
package com.bjsxt.spring.dao;public interface UserDao { public void save(String username, String password);}
package com.bjsxt.spring.dao;public class UserDao4MySqlImpl implements UserDao { public void save(String username, String password) { System.out.println("--------UserDao4MySqlImpl.save()-------"); }}
package com.bjsxt.spring.dao;public class UserDao4OracleImpl implements UserDao { public void save(String username, String password) { System.out.println("--------UserDao4OracleImpl.save()-------"); }}
3被注入的类
package com.bjsxt.spring.manager;public interface UserManager { public void save(String username, String password);}
package com.bjsxt.spring.manager;import com.bjsxt.spring.dao.UserDao;public class UserManagerImpl implements UserManager { /** * 两种方式:如果这个类中需要注入对象,先建立对象属性, * 再写构造方法或者settet方法。 * */ private UserDao userDao;/* public UserManagerImpl(UserDao userDao) { this.userDao = userDao; } */ public void save(String username, String password) { this.userDao.save(username, password); } public void setUserDao(UserDao userDao) { this.userDao = userDao; }}4测试类
package com.bjsxt.spring.client;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.bjsxt.spring.manager.UserManager;public class Client { public static void main(String[] args) {/* 传统的通过new对象建立类之间的关系 * UserManager userManager = new UserManagerImpl(new UserDao4OracleImpl()); UserManager userManager = new UserManagerImpl(new UserDao4MySqlImpl()); userManager.save("张三", "123");*//** * IOC思想:通过工厂类解析xml文件,以“反射”的方式创建对象: */ BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml"); UserManager userManager = (UserManager)factory.getBean("userManager"); userManager.save("张三", "123");/** * IOC思想:实际的执行过程,这也是为什么需要setter方法或构造方法的原因: */// UserManagerImpl userManager = new UserManagerImpl();// userManager.setUserDao(new UserDao4MySqlImpl());// userManager.save("张三", "123"); }}
阅读全文
0 0
- Spring框架之IOC
- spring框架之ioC
- spring框架之IOC
- Spring框架之IOC
- Spring框架之IOC
- spring框架学习之---ioc
- SSM框架 之 Spring-IOC
- Spring框架之IOC(续)
- Spring框架学习之IOC(一)
- Spring框架学习之IOC(二)
- Spring框架研究总结之IOC
- Spring 框架概述(三)之IoC 容器
- Spring框架之IOC、AOP详解
- Spring框架之IOC(控制反转)
- Spring框架之IoC容器—概览
- Spring框架学习之二(IOC机制)
- Spring探秘--开发自己的Spring框架之IOC
- Spring 框架 IOC本质
- 取消UICollectionView 的reloadItemsAtIndexPath默认动画
- Tiny4412标准版简介
- 用sqlplus为oracle创建用户和表空间
- 两个数组合并到一个数组
- Java编程思想之操作符
- Spring框架之IOC
- 2017 Multi-University Training Contest
- 归并排序
- android task解析和常用intent flag
- 谈谈java的运行机制
- IDEA快捷键及使用技巧
- Ireport 导出pdf(一)
- 从头到尾讲Webpack-进阶篇
- 文本处理