美文网首页
SpringIOC控制反转配置文件的基本实现

SpringIOC控制反转配置文件的基本实现

作者: 哎哎哎哎吆喂 | 来源:发表于2018-07-15 19:59 被阅读0次

首先理解几个知识点

1.类与类之间的依赖关系

当一个类A完成某个功能,需要类B的的帮助来实现,那么就叫A依赖于B

比如:

B里边有一个功能是做加法运算的.A有两个数字需要做加法运算,那么A就需要调用B中的加法运算功能,那么这个就是A依赖于B

2.MVC 是一种编程思想,使各个业务分层管理,更加细化,提高代码的复用性,可维护性!

M model 应用程序中用于处理逻辑的部分 mybatis hibernate SpringJDBC Template Dao层和sevice  

持久层和服务层

V view 视图层  应用程序中用于数据展示的部分 html jsp  freemarker velocity themyleaf

C contorller 控制器 是指应用程序中页面和数据交互的部分

在开发模式中我们一般 contorller(servlet)>>service>>dao

3.面向接口编程

面向接口编程就是先把客户的业务逻辑线提取出来,作为接口,业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,通过更改配置文件中该接口 的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。

4.高内聚,低耦合

高内聚 是指一个模块是有一下相关性很强的代码组成!

低耦合 减少类于类之间的关联或关系

5.spring 是什么?

Spring 是一款轻量级的控制反转(IOC)和面向切面(AOP)编程的框架

6.IOC是什么?

IOC 控制反转 inversion of control

IOC 是一种概念,是把程序中,类于类之间的依赖关系交给外部容器去处理,实现低耦合编程,解耦!不希望类于类之间都是new出来的!

Spring 的控制反转是通过DI 来实现的,DI(dependency injection)  是依赖注入

IOC是通过反射机制创建对象之后,通过DI 依赖注入给需要以来的对象赋值,通过反射调用构造方法或者set方法,给属性赋值

比如:

A依赖B

那么IOC会通过反射创建A和B的对象,通过DI依赖注入,给A中的B属性赋值!

需要的jar包

四个核心jar包 spring-beans/ spring-context /spring-core/spring-expression

额外包: commons-logging  log-4j 日志包

junit  单元测试包

还需要一个配置文件官方定义名称 applicationContext.xml  (可以修改名称,但是一般都用这个)

在文件中需要有配置约束,可以去官网文档中

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation="

        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 

下边开工

首先导入jar包,在这里就不演示了  我用的开发工具是IDEA 直接引入就可以了,eclipse需要手动添加

然后编写Dao持久层和Service服务层

开发Dao持久层 用于访问数据库资源

定义接口

import java.util.List;

public interface UserDAO {

    List find();

}

使用druid连接方式

public class UserDruidImpl implements UserDAO {

    @Override

    public List find() {

System.out.println("使用的是德鲁伊连接");

        return null;

    }

}

使用JDBC连接方式

public class UserJDBCImpl implements UserDAO {

    @Override

    public List find() {

System.out.println("使用的是JDBC连接");

        return null;

    }

}

两种方式实现一个接口

开发service 服务层 的业务逻辑

定义接口

public interface UserService {

    List select();

}

实现接口

public class UserServiceImpl implements UserService {

    //因为服务层的业务逻辑依赖DAO层的数据查询,所以要在这里定义DAO层对象,

    // 以前在公共能里new一个DAO层就可以了,但是利用SpringIOC可以降低类于类之间的耦合

    //所以在这里需要定义DAO层的属性

    private UserDAO userDAO;

    //这里使用面向接口编程,我前面写了两个实现,

    // 如果开始使用德鲁伊的,后来打算更改成JDBC的那么问题就来了,需要整改代码

    //使用面向接口后期只需要更改配置文件

    @Override

    public List select() {

        this.userDAO.find();//调用DAO层的方法

        return null;

    }

//添加set方法,因为DI是通过构造函数或者set方法给属性赋值

public void setUserDAO(UserDAO userDAO) {

    this.userDAO = userDAO;

}

}

编写配置文件

编写测试用例:

public class test {

    public static void main(String[] args) {

//注册配置文件 得到管理者对象

        ClassPathXmlApplicationContext context=

new ClassPathXmlApplicationContext("applicationContext.xml");

//获取服务层的实例

        UserServiceImpl userService = (UserServiceImpl)context.getBean("userService");

//调用方法

        userService.select();

    }

输出结果:

总结:

IOC(控制反转) 是把我们程序中类于类之间的依赖关系交给外部容器取处理,降低耦合性

IOC是通过DI(依赖注入) 通过构造方法或者set方法(如果使用set一定要添加set方法,如果使用构造函数要添加有参构造和无参构造,因为有很多地方会用到无参构造)实现给属性赋值!

最终底层是使用的java反射机制!

相关文章

  • SpringIOC控制反转配置文件的基本实现

    首先理解几个知识点 1.类与类之间的依赖关系 当一个类A完成某个功能,需要类B的的帮助来实现,那么就叫A依赖于B ...

  • Spring

    1.谈谈你对SpringIOC的理解,原理与实现 总:控制反转,容器控制反转:原来的对象由使用者控制,现在有了Sp...

  • spring源码解析之SpringIOC源码解析(上)

    SpringIOC源码解析(上) 一、什么是SpringIOC spring ioc指的是控制反转,IOC容器负责...

  • springIOC

    springIOC控制反转:将每个bean于bean之间的关系交给第三方容器spring进行管理springIOC...

  • SpringIOC

    SpringIOC 博客链接 概述 IOC,全称"Inverse Of Control",中文意思为:控制反转。那...

  • Spring IOC

    一、SpringIOC (1)IOC概念 IOC-Inversion of Control,即“控制反转”,是一种...

  • 通过类比JDK创建对象的方式学习SpringIoC

    overview SpringIoc控制反转,将创建对象的权力交给Spring容器,那么可以类比jdk,jdk中所...

  • Spring base

    springIOC定义:spring容器控制对象的创建,初始化,销毁(控制反转),容器控制程序之间的关系,把控件权...

  • 全网最全Spring面试题之高级篇整理总结(二)(共16题,附超

    1.谈谈你对springIOC和DI的理解,它们有什么区别?IoCInverseofControl反转控制的概念,...

  • 简单实现SpringIoc功能

    SpringIoc底层实现原理 读取bean 的XML配置文件 使用beanId查找bean配置,并获取配置文件c...

网友评论

      本文标题:SpringIOC控制反转配置文件的基本实现

      本文链接:https://www.haomeiwen.com/subject/yppspftx.html