Spring学习01--IOC容器(简介,注入)
来源:互联网 发布:2017最新网络神曲 编辑:程序博客网 时间:2024/05/21 17:47
1、IOC
IOC(控制反转):本来应该有应用程序管理的对象之间的依赖关系,现在交给容器管理,这就是控制反转的定义,即交给了IOC容器。
Spring的IOC主要是依赖于DI(注入)实现的,不需要应用程序去主动查找,对象的查找、定位、创建都交由容器管理。
2、Spring的优势
1)大量减少了Factory和Singleton(工厂和单例),使得代码的层次更加清晰,原因就是我们不需要主动查找、定位、创建对象和管理对象之间的依赖关系,这些已经都交给容器进行管理了。
2)Spring的IOC容器是一个轻量级的容器,没有侵入性,意思就是不需要实现或者继承任何IOC的接口,不依赖容器的API。
3)代码的解耦,将耦合推迟到了配置文件当中,即使需要变化也非常容易控制。
3、创建一个Spring框架的java程序。
1)加入Spring的核心jar包
2)在src目录下加入Spring的配置文件applicationContext.xml
3)UserManagerImpl类中提供构造方法,可以让Spring实现DI(注入),或者提供成员变量的get,set方法,同时提供一个无参的构造方法。
4)配置applicationContext.xml,将对象之间的依赖关系配置进去,主要用到bean标签和onstructor-arg标签。
<!-- 配置依赖关系--> <bean id="UserDaoImpl" class="com.errol.dao.UserDaoImpl"></bean> <bean id="UserManagerImpl" class="com.errol.manager.UserManagerImpl"> <!-- 构造函数注入 --> <!-- <constructor-arg ref="UserDaoImpl"></constructor-arg> --> <!-- get,set注入 --> <property name="userDao" ref="UserDaoImpl"></property> </bean>
5)加入jUnit测试包,编写一个测试函数,测试IOC容器,查看是否通过IOC容器获取到我们的对象。
public class Client { /** * 测试使用类 */ @Test public void testSpring01(){ //获取容器 BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml"); UserManager manager = (UserManager) factory.getBean("UserManagerImpl"); manager.addUser("宝宝"); } }
6)在测试函数中右键run–>jUint,查看输出结果。
4、常用的属性注入
直接看代码
<bean id="tradeAcco" class="com.errol.dao.TradeAcco"> <property name="vc_tradeacco"> <value>0001</value> </property> <property name="vc_fundacco"> <value>980001</value> </property> <property name="en_balance" value="1000000"></property> <property name="en_share" value="888888"></property> <property name="ls_manager"> <list> <value>S01</value> <value>S02</value> <value>S03</value> <value>S04</value> </list> </property> <property name="st_fundcurrent"> <set> <value>S01123412</value> <value>S02231412</value> <value>S035767</value> <value>S04213747</value> </set> </property> <property name="mp_sharedetail"> <map> <entry key="150001" value="1000"></entry> <entry key="250001" value="2000"></entry> <entry key="350001" value="3000"></entry> </map> </property> <property name="prop"> <props> <prop key="1"></prop> </props> </property> <property name="vc_date" value="2016/12/13"></property> </bean>
看上面的代码可以值到,一些常用的属性,String int double之类的注入值的时候,可以直接在 这样的方式注入,也可以在property标签内部加一个value标签。
还有一点,看int和double类型的属性,注入的值都是字符串类型或者对应的类型值,这是由于Spring在注入对象属性时,会对注入值进行编辑,调用属性编辑器,内部就是一个map,里面装有各种类型的编辑方式,比如,注入一个int类型的属性时,value=”123”,当调用属性编辑器时,自动将String类型的值转成了int类型,实现注入。
由上面可以得知,属性编辑器存放在一个map当中,我们是否可以自定义一个属性编辑器呢?下回分解。
- Spring学习01--IOC容器(简介,注入)
- Spring框架学习【IoC容器依赖注入】
- Spring源码学习IOC(5):IOC容器的依赖注入
- Spring之IOC容器注入
- Spring Ioc容器依赖注入
- spring ioc容器的注入
- Spring学习-IOC容器
- Spring IOC容器启动简介
- Spring IOC容器启动简介
- Spring:IOC释义(Bean容器、注解、依赖注入)
- Spring:源码解读(IOC容器的依赖注入)
- Ioc容器依赖注入-Spring 源码(2)
- Spring源码阅读(三)—IOC容器依赖注入
- Spring学习(三)ioc自动注入,
- Spring简介 、Spring容器 、Spring IOC
- Spring学习(一)IOC容器
- Spring 框架学习(三):IoC 容器
- Spring的IOC容器—依赖注入
- 垃圾回收笑谈
- mongodb和redis 的常用指令和python远程连接
- 正则表达式基础入门
- PHP 导出excel 设置文本格式,数字前不去掉0
- 【C#】50.使用await操作连续的异步任务
- Spring学习01--IOC容器(简介,注入)
- 将value值转换为字符串方法以及原理详解
- 贪吃蛇,游戏,动画,JavaScript
- 编程珠玑-笔记1
- 设备驱动中的platform(kernel-4.7)
- C++ 虚函数表解析
- 聚焦核心竞争力:自建与外购
- 【HIbernate框架学习】:Hibernate对象继承关系映射(一)
- 迷茫中的大二狗,从今天开始认真学习~