IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring框架引言、作用以及核心思想之一IOC(以及IOC补充的DI) -> 正文阅读

[Java知识库]Spring框架引言、作用以及核心思想之一IOC(以及IOC补充的DI)

String-day01

1. Spring框架的引言

? spring(春天),生于2002年,由 Rod Johnson 创作。Spring框架是一个集众多设计模式于一身的 开源的轻量级项目管理框架。致力于JAVAEE轻量级解决方案。相对于原来学过的mybatis 框架有了本质的区别,不是替换原来的某个框架,而是对其进行整合管理

? 轻量级解决方案:提供一个以简单的、统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合糅合在一起建立一个连贯的体系。

2. Spring框架的作用

? Spring框架用来管理 [创建 | 使用 | 销毁] 项目中的组件,由于spring框架可以帮我们生产项目中组件对象,因此也习惯成spring是一个工厂|容器

? 组件:项目中的service,dao,action,都是项目中的组件

? 注意:spring框架通常不管理实体类对象创建

在这里插入图片描述

3. 环境搭建

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

下面是一个平常使用时的例子,这里我们先不用考虑包以及类放在哪些包下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这是在没有使用spring的时候我们是这么去管理组件对象的,通过new去创建,拿到对象之后去调用方法。

在这里插入图片描述

项目中有一个天生就是用来做项目管理的spring,我们接下来来学习一下如何使用spring来进行上面组件的创建、删除和销毁。

  1. 引入spring框架的依赖

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

spring的设计和曾经mybatis的设计不一样,spring的设计是基于一个一个的小模块进行管理,所以在用的时候必须把它依赖的这些模块以及核心模块全部给引入进去。

注意:引入spring核心模块以及依赖模块

spring - core	核心依赖

spring - context 

spring - jdbc

spring - web

spring - expression

spring - aspects

spring - beans

spring - context - supports

引入依赖

<!--spring核心及相关依赖-->
<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.3.2.RELEASE</version>
  </dependency>
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.3.2.RELEASE</version>
  </dependency>
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.3.2.RELEASE</version>
  </dependency>
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>4.3.2.RELEASE</version>
  </dependency>
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>4.3.2.RELEASE</version>
  </dependency>
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.2.RELEASE</version>
  </dependency>
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>4.3.2.RELEASE</version>
  </dependency>
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>4.3.2.RELEASE</version>
  </dependency>
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.2.RELEASE</version>
  </dependency>

在这里插入图片描述

  1. 引入spring框架配置文件
# 配置文件名称: 任意名称 
# 配置文件位置: 项目中根下任意位置
# 配置文件的内容:
	<?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-3.2.xsd ">
    </beans>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 通过spring管理组件
<!--通过spring管理组件
    bean:   用来管理组件对象的创建
    class:  用来指定管理组件对象的全限定名 包.类
    id:     用来指定spring框架创建的当前组件对象在spring(容器|工厂)中唯一标识 全局唯一
-->
<bean class="init.UserDAOImpl" id="aa"></bean>

在这里插入图片描述

  1. 启动工厂,获取对象进行测试
public class TestSpring {

    public static void main(String[] args) {
        // 启动工厂
        // 通过resources目录下xml去构建工厂
        ApplicationContext context = new ClassPathXmlApplicationContext("init/spring.xml");

        // 获取工厂中创建好的对象 参数:获取工厂中指定对象的唯一标识
        UserDAO userDAO = (UserDAO) context.getBean("aa");
        System.out.println(userDAO);
        userDAO.save("xiaochen");
    }
}

在这里插入图片描述

总结:

在这里插入图片描述

另外

标签的id建议写成指定组件对象的名字,其中首字母小写

<!--通过spring管理组件
    bean:   用来管理组件对象的创建
    class:  用来指定管理组件对象的全限定名 包.类
    id:     用来指定spring框架创建的当前组件对象在spring(容器|工厂)中唯一标识 全局唯一
			 推荐:id推荐写成接口的名字,首字母小写
-->
<bean class="init.UserDAOImpl" id="userDAO"></bean>

4. spring框架中核心思想

spring框架中核心思想
	IOC	  AOP	两个思想	IOC思想	AOP
	IOC:	控制反转| 反转控制
	AOP:	面向切面的编程
	
	
	IOC:	Inversion(反转)	Of		Controll	控制反转 | 反转控制
	
		  定义:所谓控制反转其实指的是控制权力的反转
		  
		  通俗定义:就是将原来手动通过new关键字创建对象的权利交给spring,通过在配置文件中配置bean标签形式创建对象,交给
		  		   spring由spring创建对象的过程
		  		   
 	DI:  Denpendcy	Injection	依赖注入	(在IOC的基础上又提出的一个补充概念)
    	  定义:为组件中的成员变量完成赋值的过程  这个过程就称之为依赖注入
    	  语法:
    	  		1.组件对象中需要哪个组件|谁	 将谁声明为成员变量并提供公开的SET方法...
    	  		2.在spring的配置文件中对应的组件标签内使用property标签去完成属性的赋值操作
    	  		
    	  		
   	IOC 全部概述:控制反转  就是将原来手动通过new关键字创建对象的权利交给spring,由spring工厂创建对象的过程,
   						 当然spring不仅要创建对象还要在创建对象的同时通过DI的方式维护组件与组件的调用关系
   						
                        
2.DI基本语法

	DAO组件:
		public class DeptDAOImpl implements DeptDAO{
            @Override
            public void save(String name) {
                System.out.println("DAO   name:" + name);
            }
        }
        
   Service组件:
        //service组件
        public class DeptServiceImpl implements DeptService{

            // 需要DAO组件对象  依赖DAO组件
            private DeptDAO deptDAO;

            // 公开的SET方法
            public void setDeptDAO(DeptDAO deptDAO) {
                this.deptDAO = deptDAO;
            }

            @Override
            public void save(String name) {
                System.out.println("deptService name:" + name);
                deptDAO.save(name);
            }
        }
   配置文件赋值:

    <!--管理DAO组件-->
    <bean class="di.DeptDAOImpl" id="aa"></bean>

    <!--管理Service组件-->
    <bean class="di.DeptServiceImpl" id="deptService">
        <!--依赖的注入
            property:用来给组件中的属性进行赋值操作
            name    :用来指定给组件中哪个属性名进行赋值
            ref     :用来指定赋值对象在工厂中唯一标识 bean的id
        -->
        <property name="deptDAO" ref="aa"/>
    </bean>
    
    启动工厂测试:
        // 启动工厂
        ApplicationContext context = new ClassPathXmlApplicationContext("di/spring.xml");

        // 获取deptDAO
        DeptService deptService = (DeptService) context.getBean("deptService");
        deptService.save("百知教育");    


DI操作第一步:

组件对象中需要哪个组件|谁 将谁声明为成员变量并提供公开的SET方法…

在这里插入图片描述

DI操作第二步:

在spring的配置文件中对应的组件标签内使用property标签去完成属性的赋值操作

在这里插入图片描述

测试:

public class TestSpring {
    public static void main(String[] args) {
        // 启动工厂
        ApplicationContext context = new ClassPathXmlApplicationContext("di/spring.xml");

        // 获取deptDAO
        DeptService deptService = (DeptService) context.getBean("deptService");
        deptService.save("百知教育");
    }
}

结果:

在这里插入图片描述

4.1 IOC(控制反转)

  • IOC(inversion of controll)控制反转

    # 1.定义
        将对象的创建由原来(new)的方式转移到配置文件中,交给spring工厂来创建对象
    
  • DI(Denpendcy)依赖注入

    # 1.定义
        spring不仅要创建对象,还要建立类与类之间的关系,因此在控制反转的基础上又提出了依赖注入的概念。
    
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:14:49  更:2022-02-28 15:16:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:35:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码