spring-ioc的学习
Posted waibangma
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-ioc的学习相关的知识,希望对你有一定的参考价值。
在前面学习了mybatis的时候,我们去掉了dao层,使用mapper层来代替.
但是程序还是先到控制层,在控制层创建业务层对象,跳转至业务层,在业务层创建SqlSession对象,使用动态代理的方法取得类的mapper对象,通过mapper对象取到特定的方法,去数据库取得数据后一层一层返回,直至传到视图层.
这里出现了一个问题,那就是各层的依赖太密切了,我要换掉一层都很难.这就是高耦合.如何给他们解开之间的依赖,使之变得独立呢?
于是出现了springIOC技术,也就是控制反转技术控制是指本来是我们在new对象,变成了spring帮我们生成对象.比如控制层要是想使用业务层的方法,必须要new业务层对象.现在不用了,spring帮我们直接创建.反转是指将创建好的对象返回给调用者的过程
直接看例子
要创建学生类对象,已知有三个属性,sid,sname,sage
在src下创建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" default-autowire="byName" ></beans>
在beans标签里写bean标签
在测试类中则是
直接创建
ApplicationContext对象,通过这个对象获得需要的对象.好比applicationContext里已经写好了有哪些类,你需要那些就去拿.通过stu,stu1这个名字拿
带参数的对象的拿法有两种,
1.构造方法拿,就在bean标签内再加construction-arg,但是pojo的类里必须得有这个构造方法
2.通过属性的get/set方法拿带参的对象.在bean标签里加<property>标签
如果需要修改类的属性,直接在配置文件里该就好了.这样就实现了解耦
但是解耦后的对象彻底的独立了,本来控制层还能调用业务层呢,现在可怎么办?
干脆一不做二不休,将类的关系也写在配置文件里,怎么样?
于是我们就有了依赖注入(DI)
以上是关于spring-ioc的学习的主要内容,如果未能解决你的问题,请参考以下文章