测试同学从0到1上手Spring

开发 前端
Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

 最近在各个大厂的JD中关于测试平台开发的职位信息频频曝光,有很多同学对该职位产生了极高的热情。也有很多人对其望而却步,认为Spring、Spring boot这些东东太深奥了,开发都很难搞定,自己是一个tester又怎能驾驭呢?为了打消大家的顾虑,我准备了一系列文章,通过我一个测试人的视角(我是从零开始学习,我懂测试同学的需求),用最通俗的语言帮大家搞定Spring基础知识,进而快速理解Spring并在实际工作中进行应用!

Spring定义

Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring 框架的 7 个模块,如下图所示:


每个模块的功能如下:

Spring core:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

Spring ContextSpring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。

Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能 , 集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理任何支持 AOP的对象。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖组件,就可以将声明性事务管理集成到应用程序中。

Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。

Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

Spring Web:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

Spring MVC:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText和POI

其中最为重要的就是Spring Core(控制反转技术,即IOC)和 Spring AOP,我会在后续的文章中进行详细介绍,今天我们来重点讲解Spring的环境搭建和Hello Spring Demo的编写。

环境搭建

最简单的方式,创建一个maven工程,pom.xml如下

  1. <dependency> 
  2.  
  3. <groupId>org.springframework</groupId> 
  4.  
  5. <artifactId>spring-webmvc</artifactId> 
  6.  
  7. <version>5.2.5.RELEASE</version> 
  8.  
  9. </dependency> 

 Spring 中的Bean

Spring容器可以被看作一个大工厂,而 Spring 容器中的 Bean 就相当于该工厂的产品。如果希望这个大工厂能够生产和管理 Bean,这时则需要告诉容器需要哪些 Bean,以及需要以何种方式将这些 Bean 装配到一起。

Bean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。总之,JavaBean就是遵循一些规范的Java类。众所周知,属性名称符合这种模式,其他Java 类可以通过反射机制发现和操作这些JavaBean 的属性。

范例代码如下:

  1. public class Person { 
  2. //Person类封装的私有属性 
  3. // 姓名 String类型 
  4. private String name
  5. // 性别 String类型 
  6. private String sex; 
  7. // 年龄int类型 
  8. private int age; 
  9. //Person类的无参数构造方法 
  10. public Person() { 
  11. //Person类对外提供的用于访问私有属性的public方法 
  12. public String getName() { 
  13. return name
  14. public void setName(String name) { 
  15. this.name = name
  16. public String getSex() { 
  17. return sex; 
  18. public void setSex(String sex) { 
  19. this.sex = sex; 
  20. public int getAge() { 
  21. return age; 
  22. public void setAge(int age) { 
  23. this.age = age; 

 Spring中的配置文件

Spring配置文件是用于指导Spring工厂进行Bean生产、依赖关系注入(装配)及Bean实例分发的"图纸"。Spring配置文件是一个或多个标准的XML文档,applicationContext.xml(也可以定义为其他名字)是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。我们可以把配置文件保存在src/main/resources目录下


Spring配置文件支持两种不同的格式,分别是 XML 文件格式和 Properties 文件格式。通常情况下,Spring 会以 XML 文件格式作为Spring 的配置文件,这种配置方式通过 XML 文件注册并管理 Bean 之间的依赖关系。XML 格式配置文件的根元素是 ,该元素包含了多个 子元素,每一个 子元素定义了一个 Bean,并描述了该 Bean 如何被装配到 Spring 容器中。配置文件基础格式如下:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2.  
  3. <beans xmlns="http://www.springframework.org/schema/beans" 
  4.  
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  6.  
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans 
  8.  
  9. https://www.springframework.org/schema/beans/spring-beans.xsd"> 
  10.  
  11. <bean id="..." class="..."
  12.  
  13. </bean> 
  14.  
  15. <bean id="..." class="..."
  16.  
  17. <property name=" ..." value="..."/> 
  18.  
  19. </beans> 

 其中

xmlns表示xml需要引入的命名空间。

bean= 对象

id= 变量名,id 是bean的标识符,要唯一,可以理解为一个实例名

class= new的类

property相当于给对象中的属性设值

Hello Spring

写一个类代码

  1. public class HelloSpring { 
  2. private String name="hello"
  3. HelloSpring(){ 
  4. System.out.println("Hello Spring"); 
  5. public String getName() { 
  6. return this.name ; 
  7. public void setName(String name) { 
  8. this.name = name

 在配置文件中添加HelloSpring的类配置信息

  1. <?xmlversion="1.0"encoding="UTF-8"?> 
  2.  
  3. <beansxmlns="http://www.springframework.org/schema/beans" 
  4.  
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  6.  
  7. xmlns:context="http://www.springframework.org/schema/context" 
  8.  
  9. xsi:schemaLocation="http://www.springframework.org/schema/beans 
  10.  
  11. https://www.springframework.org/schema/beans/spring-beans.xsd 
  12.  
  13. http://www.springframework.org/schema/context 
  14.  
  15. https://www.springframework.org/schema/context/spring-context.xsd"> 
  16.  
  17. <beanid="hellospring"class="com.my.demo.HelloSpring"/> 
  18.  
  19. </beans> 

 写一个测试类

  1. public class HelloTest { 
  2.      public static void main(String[] args) { 
  3.            //获取spring上下文对象 
  4.            ApplicationContextcontext = new ClassPathXmlApplicationContext("beans1.xml"); 
  5.            //我们的对象能在都在spring中管理了,我们要使用,直接取出来就可以了 
  6.            HelloSpringhello = (HelloSpring) context.getBean("hellospring"); 
  7.            System.out.println(hello.getName()); 
  8.         } 

 运行类HelloTest,运行结果如下:

  1. Hello Spring //构造函数中输出的值 
  2.  
  3. Hello //getName方法中输出的值 

 是不是很神奇,我们可以看到spring并没有new 实例的过程,但是完成了实例化的操作!并成功调用了getName方法,这就是Spring 容器中对Bean的管理,简单的说,就是Spring框架从配置文件beans1.xml中获取了类HelloSpring的实例hellospring,并自动完成了实例化的相关工作!这项技术就是IOC,我会在下一篇文章中详细说明。

 

责任编辑:姜华 来源: 今日头条
相关推荐

2021-03-23 08:12:13

SpringDIIoC

2021-03-16 08:22:49

SpringIoCAOP

2021-03-30 08:49:27

测试Spring AOP

2016-11-28 16:23:23

戴尔

2022-05-09 08:35:43

面试产品互联网

2023-03-06 11:35:55

经营分析体系

2021-07-01 07:03:32

开发Webpack代码

2022-11-03 11:31:43

结构分析法监测

2022-03-15 11:51:00

决策分析模型

2022-04-07 10:02:58

前端检测工具

2023-03-19 17:36:38

2019-07-31 10:18:17

Web 开发Python

2017-05-27 09:23:10

IOS框架APP框架代码

2018-01-16 12:31:33

Python爬虫数据

2023-03-22 11:41:56

2022-06-13 07:02:02

Zadig平台自动化

2015-06-12 10:03:05

QQ浏览器

2019-10-22 08:12:49

消息队列分布式系统

2023-04-10 07:40:50

BI 体系数据中台
点赞
收藏

51CTO技术栈公众号