• 第一章、Spring基础


    1.Spring基础

    1.1什么是Spring

    Spring框架是一个开放源代码J2EE应用程序框架,由[Rod Johnson](https://baike.baidu.com/item/Rod Johnson/1423612)发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。

    1.2Spring的基础包

    整个Spring框架有很多jar包,我这里就拿4个Spring的基础包出来说明一下,正好对应了Spring核心容器的4个模块。

    包名说明
    spring-core-5.2.3.RELEASE.jar包含Spring框架基本的核心工具类,Spring其它组件都要用到这个包里的类
    spring-beans-5.2.3.RELEASE.jar所有应用都要用到的jar包,包含访问配置文件、创建和管理Bean已经进行IoC和DI操作相关的所有类
    spring-context-5.2.3.RELEASE.jarSpring提供了在基础IoC功能上的扩展服务,还提供了许多企业级服务的支持,如任务调度、JNDI定位、缓存、邮件服务等以及各种视图层框架的封装等
    spring-expression-5.2.3.RELEASE.jar定义了Spring的表达式语言

    1.3控制反转(IoC)与依赖注入(DI)

    1.3.1控制反转(IoC)

    • 比如现在有普通类,在这个类里面有普通的方法,调用这个类里面的普通的方法,需要创建类对象,使用对象调用方法;
    • 创建类的对象,使用原始方式new对象。使用ioc实现对象创建,不需要手动new对象,通过配置文件方式创建对象;
    • 把对象创建交给spring配置。

    1.3.2依赖注入(DI)

    • 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源;
    • 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配

    把有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入。目的是实现类的解耦。

    1.4创建一个Spring项目

    1.4.1工具

    • idea

    1.4.2创建项目

    • File -> New -> project…

    在这里插入图片描述

    • Java -> Next

    在这里插入图片描述

    • Next

    在这里插入图片描述

    • 修改名称,然后点击next

    在这里插入图片描述

    • 右键单击项目,出现下图所示,点击Add Framework Support…

    在这里插入图片描述

    • 勾选Web Application(4.0),在点击ok

    在这里插入图片描述

    • 完成上面的操作后,可以看到现在项目结构如下:

    在这里插入图片描述

    • 右键单击WEB-INF,new -> Directory 创建一个lib文件夹存放spring的jar包

    在这里插入图片描述

    • 输入lib

    在这里插入图片描述

    在这里插入图片描述

    • File -> Project Structure

    在这里插入图片描述

    • 下面步骤就不细说了,你们对比一下我的截图看看,有区别的就修改一下,有问题就在评论区反馈一下,我会及时回答的

    在这里插入图片描述

    在这里插入图片描述

    • 点击Java

    在这里插入图片描述

    • 选择咱们这个项目我们建的lib包

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    • 点击右下角的Fix

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    • 右键单击src,在src目录下创建com.system.spring包

    在这里插入图片描述

    在这里插入图片描述

    • 在创建这些包,参考下图

    在这里插入图片描述

    • 在dao目录下创建UserDao.java

    在这里插入图片描述

    • 代码如下

      package com.system.spring.dao;
      
      public interface UserDao {
      
          /**
           * 定义一个login()方法
           */
          public void login();
          
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
    • 在impl目录下创建UserDaoImpl.java

      package com.system.spring.impl;
      
      import com.system.spring.dao.UserDao;
      
      public class UserDaoImpl implements UserDao {
          
          /**
           * 实现login()方法
           */
          @Override
          public void login() {
              System.out.println("UserDao -> login()");
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
    • 在WEB-INF目录下创建一个spring包

    在这里插入图片描述

    • 在spring目录下面创建: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">
                 
          <!-- 将指定类配置给Spring,让Spring创建其对象的实例-->
          <bean id="userDao" class="com.system.spring.impl.UserDaoImpl" />
      
      </beans>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9

    在这里插入图片描述

    • 右键单击spring,给spring目录设置成资源目录**(重要)**

    在这里插入图片描述

    • 在ioc_di目录下创建IoC.java

      package com.system.spring.ioc_di;
      
      import com.system.spring.dao.UserDao;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      public class IoC {
      
          public static void main(String[] args) {
              // 1.初始化Spring容器,加载配置文件
              ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
              // 2.通过容器获取userDao实例
              UserDao userDao = (UserDao) applicationContext.getBean("userDao");
              // 3.调用实例中的login()方法
              userDao.login();
          }
      }
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18

    1.4.3运行项目

    点击下图所指的图标,即可成功运行项目。

    在这里插入图片描述

    成功运行,输出结果如下图所示:

    在这里插入图片描述

    1.5总结

    从上面可以看出来,控制台成功输出了 UserDao -> login() ,在IoC.java里面,咱们并没有通过new关键字来创建UserDao接口的实现类对象,而是通过spring的容器来获取的实现对象,这就是Spring IoC(控制反转)的工作机制。

    1.6项目地址

    码云:https://gitee.com/djyalw/spring-spring-mvc-my-batis/tree/master/01.spring

    从上面可以看出来,控制台成功输出了 UserDao -> login() ,在IoC.java里面,咱们并没有通过new关键字来创建UserDao接口的实现类对象,而是通过spring的容器来获取的实现对象,这就是Spring IoC(控制反转)的工作机制。

  • 相关阅读:
    mindspore 执行模型转换为310的mindir文件显示无LRN算子
    线性代数|机器学习-P1课程简介
    深入理解Golang之Map
    Python 博客园快速备份脚本
    使用Net将HTML简历导出为PDF格式
    私有仓库Harbor安装
    JavaScript中的Promise
    【MySQL】使用C/C++访问MySQL
    #gStore-weekly | gAnswer源码解析 调用NE模块流程
    【由果索因】模块化代码后,这样的JavaScript技巧才值得用
  • 原文地址:https://blog.csdn.net/aa1662915585/article/details/125630494