第一章: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();
        
    }
    
  • 在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()");
        }
    }
    
  • 在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>
    

在这里插入图片描述

  • 右键单击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.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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值