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的学习的主要内容,如果未能解决你的问题,请参考以下文章

Spring-IOC学习笔记-03DI依赖注入

Spring-IOC学习笔记-04扩展命名空间

Spring-IOC学习笔记-05bean的属性

Spring-IOC学习笔记-06bean的生命周期

Spring-IOC学习笔记-08基于JavaConfig开发

Spring-IOC学习笔记-07基于注解开发