美文网首页
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控制反转配置文件的基本实现

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