漫画 | Spring Framework

简介: 漫画 | Spring Framework

这一天,小知开始学习Spring


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


image.png


image.png


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


image.png



结果 ~


image.png


其实,小知不知道的是:


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-name>contextConfigLocation</param-name>
   <param-value>classpath: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创建了一个实例对象

目录
相关文章
|
7月前
|
Java 开发者 Spring
Spring Framework 中的 @Autowired 注解:概念与使用方法
【4月更文挑战第20天】在Spring Framework中,@Autowired 注解是实现依赖注入(Dependency Injection, DI)的一种非常强大的工具。通过使用 @Autowired,开发者可以减少代码中的引用绑定,提高模块间的解耦能力
724 6
|
4月前
|
安全 Java 网络安全
Spring Framework JDK >= 9 远程代码执行(CVE-2022-22965)
Spring Framework JDK >= 9 远程代码执行(CVE-2022-22965)
|
6月前
|
前端开发 Java 调度
Spring Webflux 是 Spring Framework 提供的响应式编程支持
Spring Webflux 是 Spring Framework 提供的响应式编程支持
88 2
|
5月前
|
Cloud Native Java 开发者
深入解析Spring Framework的核心设计原理
深入解析Spring Framework的核心设计原理
|
5月前
|
安全 Java Apache
如何安装与使用Spring Boot 2.2.x、Spring Framework 5.2.x与Apache Shiro 1.7进行高效开发
【7月更文第1天】在现代Java Web开发领域,Spring Boot以其简化配置、快速开发的特点备受青睐。结合Spring Framework的成熟与Apache Shiro的强大权限控制能力,我们可以轻松构建安全且高效的Web应用。本篇文章将指导你如何安装并使用Spring Boot 2.2.x、Spring Framework 5.2.x以及Apache Shiro 1.7来构建一个具备基础权限管理功能的项目。
91 0
|
7月前
|
设计模式 Java 数据库连接
Spring Framework 6 中的设计模式
Spring Framework 6 中的设计模式
48 1
|
7月前
|
前端开发 Java Spring
Spring Framework五大功能模块
Spring Framework五大功能模块
|
开发框架 安全 Java
Spring Framework远程代码执行漏洞复现(CVE-2022-22965)
Spring Framework存在远程代码执行漏洞,攻击者可通过该漏洞执行系统命令。
464 1
Spring Framework远程代码执行漏洞复现(CVE-2022-22965)
|
前端开发 Java 数据库连接
【面试题精讲】Spring Framework有哪些模块?
【面试题精讲】Spring Framework有哪些模块?
|
安全 Java 测试技术
Spring Framework中的Bean生命周期2
Spring Framework中的Bean生命周期2
83 0