【加精】漫画 | Spring Framework

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 【加精】漫画 | Spring Framework

这一天,小知开始学习Spring

不过,他会怎么开始学习Spring呢?

漫画 | Spring Framework 漫画 | Spring Framework 漫画 | Spring Framework 漫画 | Spring Framework

然后,小知看到了下面这张图

漫画 | Spring Framework

结果 ~ 

漫画 | Spring Framework 漫画 | Spring Framework

其实,小知不知道的是:

Spring 既然分为多个模块,那么在使用的时候,你可以选择学习自己需要的模块,而不必把所有模块都学会

好了,小知虽然不学了,但是我们还得学习

Spring版本要求

Spring Framework5.x  要求  JDK 8+

Spring Framework4.x  要求  JDK 6+

Spring核心容器

Spring框架提供了两种核心容器,分别为BeanFactory和ApplicationContext,核心容器是实现其功能的关键。

BeanFactory在实际开发中并不多用,不再详述

ApplicationContext

ApplicationContext被称为应用上下文,是一种常用的Spring核心容器,除包含BeanFactory的所有功能外,还拓展了其他方面的功能,通常Spring的配置内容均放在容器中,容器在项目中表现为xml配置文件(如applicationContext.xml)。

项目中运用Spring,首先启动时应实例化Spring容器,而后才能使用Spring容器的内容

如果项目启动时报出类似于bean实例化失败的错误,其中的可能之一就是Spring容器配置文件没有加载到。

在Java项目中,通常采用ClassPathXmlApplicationContext进行容器实例化

而在Web项目中,通常使用ContextLoaderListener实现容器实例化

Java项目中实例化方式


ApplicationContext applicationContext = 
             new ClassPathXmlApplicationContext("applicationContext.xml");

注:项目路径通常以classpath为根路径,而java项目中,classpath通常指src根路径下

Web项目中实例化方式

在Web服务器中加入以下实例化代码,通常是位于web.xml文件中,即项目启动便实例化容器


!—指定配置文件位置 --  
context-param
    param-namecontextConfigLocation/param-name
    param-valueclasspath:applicationContext.xml/param-value
/context-param
!—指定以ContextLoaderListener方式启动Spring容器 --  
listener
    listener-class
      org.springframework.web.context.ContextLoaderListener
    /listener-class
/listener

注:项目路径通常以classpath为根路径,普通Web项目中,classpath通常指src根路径下,如果是Maven项目,classpath通常指向resources文件夹下

Spring核心容器需要导入必要的jar包

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-core-3.2.0.RELEASE.jar

spring-expression-3.2.0.RELEASE.jar

commons-logging-1.1.1.jar

控制反转和依赖注入

IoC(Inverse of Control, 反转控制)

就是将原本在程序中采用new等方式创建对象的部分,交由Spring框架去完成,简单说,就是创建对象控制权交给了Spring框架

当我们在调用对象的时候,通常会采取new一个对象的方式创建对象,即:


UserService userService = new UserService();

在Spring中,创建对象则交由Spring容器来负责,方式如下:

在容器中创建一个bean,然后程序中使用:


UserServiceuserService = (UserService)applicationContext.getBean("userService");

注:使用这种方式首先需要实例化applicationContext,即实例化容器

使用Spring的方式看似复杂,但其实在大的项目中,采用这种方式实现了解耦,如果需要变更对象,则只需要修改容器中的配置代码,而不需要去修改程序中的多处代码

依赖注入

依赖注入就是在Spring框架进行对象创建的时候,将所依赖的对象注入到定义的bean中,与控制反转相互配合作用。


!—定义bean实现让Spring创建对象的实例 --
bean id="userDao" class="com.ayin.UserDaoImpl" /
  
!--添加一个id为userService的实例 --
bean id="userService" class="com.ayin.UserServiceImpl"
    !-- 将id为userDao的Bean实例注入到userService实例中 --
    property name="userDao" ref="userDao" /
/bean

注:使用SpringMVC的时候,可以使用注解完成这部分功能

其作用相当于我们在UserServiceImpl中使用UserDaoImpl创建了一个实例对象

漫画 | Spring Framework
本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 【加精】漫画 | Spring Framework


 上一篇
【加精】漫画 | Spring AOP 【加精】漫画 | Spring AOP
上期,我们看到有小伙伴留言说希望讲讲AOP 然后…… 别激动,来得及 什么是AOP AOP是Spring 框架的一个关键组件,全称为Aspect-OrientedProgramming(面向切面编程),目前已是一种比较成
2021-04-05
下一篇 
Spring MVC配置详解 Spring MVC配置详解
作者:牧涛链接:www.cnblogs.com/superjt/ 链接:www.cnblogs.com/superjt/ 现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员
2021-04-05