SpringIOC的基本总结

 

文章目录

目录

文章目录

一、什么是Spring

二、Spring框架的优势

 

三、SpringIOC机制的详解

 

IOC作用总结

SpringIOC机制的详解

一、先构建maven工程,添加依赖

二、创建持久层和实现类

三、创建业务层和实现类

四、在resources文件夹中创建一个任意名称的xml文件的

 

五、测试类

 

总结


 

一、什么是Spring

Spring是一个分层的Java SE/EE(web) full-stack(一站式)轻量级开源框架,以 IOC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。

一站式: Spring可以提供任何javaEE方向的开发支持。

轻量级: 当前的框架对硬件的要求不高,容易上手,容易使用

开源: 免费 开放源代码

无缝链接: 整合我们目前市面上使用javaEE开发技术(熔炉,融化各种形状和材质的铁块)

在java三层架构当中分别提供了相应技术:

表现层(web层) :SpringMVC (框架)

业务层(service层) :Bean管理(IOC容器)

持久层(dao层) :JdbcTemplate模板对象以及提供了ORM模块整合其他优秀的持久层技术

二、Spring框架的优势


方便解耦,简化开发 : Spring 就是一个大工厂,可以管理所有对象的创建和依赖关系维护,交给Spring管理

AOP 编程的支持 :可以方便的实现对程序进行权限拦截,日志记录,运行的监控

声明式事务的支持 :通过配置方式完成对事务的管理,无需手动编程

方便程序的测试 :对Junit支持,可以通过注解方便的对Spring程序进行测试

整合外部优秀技术 : Spring内部提供了对各种优秀框架(Hibernate,Mybatis,Quartz等)的直接支持

javaEE技术的封装 :Spring对javaEE开发当中复杂难用的API(JavaEmail, RMI等)进行封装,降低了这些API的使用难度

三、SpringIOC机制的详解


SpringIOC:书籍一般翻译为控制反转、控制倒置等

控制:Spring提供了一个容器用于控制java开发中的对象

反转的含义:程序本身不创建对象,而变成被动的接收对象

1996 年,Michael Mattson 在一篇有关探讨面向对象框架的文章中,首先提出了 IOC 这个概念。简单来说就是把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。

SpringIOC的基本总结

 

由于引入了中间的IOC容器,所以使得A、B、C、D四个对象没有直接耦合关系,四个齿轮的转动全部依靠中间的IOC容器来进行,所以很多人把IOC容器看作粘合剂。

IOC作用总结

IOC本质上就是一个大工程,大容器。主要作用就是创建和管理对象的依赖关系,削减计算机程序的耦合(解除我们代码中的依赖关系),提高程序的可扩展性和可维护性。

SpringIOC机制的详解


一、先构建maven工程,添加依赖

     <properties>
        <spring.version>5.2.5.RELEASE</spring.version>
    </properties>
    <!--导入spring的context坐标,context依赖core、beans、expression aop-->
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>

二、创建持久层和实现类

//UserMapper接口
package com.ujiuye.mapper;

public interface UserMapper {
    void getUser();
}

//UserMapperImpl实现类

public class UserMapperImpl implements UserMapper{
    public void getUser(){
        System.out.println("默认获取用户的数据");
    }
}

三、创建业务层和实现类

 

//UserService接口
import com.ujiuye.mapper.UserMapper;

public interface UserService {
    void getUser();
    void setUserMapper(UserMapper userMapper);
}

//UserServiceImpl实现类

public class UserServiceImpl implements UserService{
    private UserMapper userMapper;
    //利用set进行动态实现值的注入
    @Override
    public void getUser() {
        userMapper.getUser();
    }
    @Override
    public void setUserMapper(UserMapper userMapper) {
        this.userMapper=userMapper;
    }
}

四、在resources文件夹中创建一个任意名称的xml文件的

 

//规范命名为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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--    使用Spring来创建对象,在Spring这些都成为Bean
        id等价于变量名
        class相对与new的对象
        property相当于给对象中的属性设置一个值
-->
    <bean name="userMapperImpl" class="com.ujiuye.mapper.UserMysqlMapperImpl"/>
    <bean name="userServiceImpl" class="com.ujiuye.service.UserServiceImpl"/>
     
</beans>

五、测试类

public class TestSpring {
    @Test
    public void test1(){
        //获取Spring的上下文对象:拿到Spring的容器
         ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //我们的对象现在都在Spring中管理了,我们要使用现在直接去里面取出来就可以了
        Hello hello =(Hello) context.getBean("hello");
        UserServiceImpl userService =(UserServiceImpl) context.getBean("ServiceImpl");
        userService.getUser();

    }

 

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

上一篇:Mybatis-02


下一篇:Mybatis -9.28学习笔记 ---- 前阶段优化