Spring框架介绍和使用

版权声明:未经作者允许,禁止私自转载! https://blog.csdn.net/qq_42726314/article/details/82821289

1.1     Spring 框架简介

Spring 框架(简称Spring)是 SpringSource 出品的一个用于简化 Java企业级应用开发开源的应用程序框架。它提供了开发一个结构良好的、可维护和易于测试的应用所需的基础设施,当使用Spring框架时,开发者只需要专注于编写应用的业务逻辑。从而提供开发者的生产效益。你可以使用Spring框架开发独立的Java应用程序、Web应用程序、Applet 或任何其他类型的Java应用程序。

轻量级框架,JavaEE的春天,当前主流框架。

Spring 框架的目标:使现有技术更加易用,推进代码最佳实践。

Spring 框架的核心:提供了依赖注入(Dependency Injection,DI)机制的控制反转(Inversion of Control,IoC)容器。

1.2     Spring IoC 容器

一个Java应用程序由互相调用提供应用程序行为的一组对象组成。某个对象调用的其他对象称为它的依赖性。例如,如果对象X调用了对象Y和Z,那么Y和Z就是对象X的依赖性。DI是一种设计模式,其他对象的依赖项通常被指定为其构造函数和setter方法的参数。并且,这些依赖性将在这些对象创建时注入该对象中。

在Spring 应用程序中,Spring Ioc 容器(也称为Spring 容器)负责创建应用程序对象并注入他们的依赖性。Spring容器创建和和管理的应用对象称为Bean。由于Spring容器负责创建应用程序对象组合在一起,因此不需要实现诸如工厂或者服务定位器等设计模式来构成应用。因为创建和注入依赖性的不是应用程序的对象,而是Spring容器,所以依赖注入(DI)也称为控制反转(IoC)。

1.3     Spring 框架的模块

Spring 框架由多个模块组成,它们根据应用开发功能进行分组。

Spring框架中的各个模块组
模块组 描述
Core container     包含构成 Spring 框架的基础模块。该组中的 spring-core 和 spring-beans 模块提供了 Spring的 DI 功能和 IoC容器实现。spring-expessions 模块为在Spring 应用中通过 Spring 表达式语言配置应用程序对象提供了支持。
AOP and instrumentation     包含支持AOP(面向切面编程)和类工具模块。The spring-aop 模块提供 Spring 的 AOP功能,spring-instrument 模块提供了对类工具的支持。
Messaging     包含简化开发基于消息的应用的 spring-messaging 模块。
Data Access/Integration

    包含简化与数据库和消息提供者交互的模块。spring-jdbc 模块简化了用JDBC与数据库的交互,spring-orm 模块提供了与ORM(对象关系映射)框架的集成,如 JPA 和 Hibernate。spring-jms 模块简化了与 JMS 提供者的交互。

    此模块组还包含了 spring-tx模块,该模块提供了编程式与声明式事务管理。

Web     包含简化开发 Web 和 protlet 应用的模块。spring-web 和 spring-wemvc 模块都是用于开发 Web 应用和 RESTful 的 Web 服务的。spring-websocket 模块支持使用 WebSocket 开发Web应用。
Test     包含 spring-test模块,该模块简化了创建单元和集成测试。
              

     由上表可知,Spring涵盖了企业应用程序开发的各个方面,可以使用Spring开发Web 应用程序、访问数据库、管理事务、创建单元和集成测试等。在设计Spring框架模块时,你只需要引入应用程序所需要的模块。例如,在应用程序中国使用Spring的DI功能,只需要引入 Core container 组中的模块。                                                                                                           

在Spring框架中,JAR文件的命名惯例如下:

spring-<short-module-name>-<spring-version>.jar

<short-module-name>:Spring模块的简称,如 aop、beans、content、expressions等。

<spring-version>:Spring框架的版本。

 

由上图可知,核心容器模块是Spring的中心,其他模块都是依赖于它。同等重要的是 AOP 和 工具组包含的模块,因为它们提供了Spring框架中其他模块的AOP功能。

1.4     使用Spring框架的好处

  •  方便解耦、简化开发(高内聚低耦合)。

Spring 负责应用程序对象的创建并注入它们的依赖性,简化了Java应用程序的组成。

  • AOP编程支持

Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。

  • 声明事务的支持

只需要通过配置就可以完成对事务的管理。

  • 方便程序的测试

Spring 对Junit4支持,可以通过注解测试Spring程序。

  • 方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。

  • 降低JavaEE API的使用难度

Spring 对 JavaEE 开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。

1.5     一个简单的Spring应用程序

Spring 需要使用的jar包:

spring-context-5.0.8.RELEASE.jar    密码:gsl4

spring-beans-5.0.8.RELEASE.jar    密码:27hj

spring-expression-5.0.8.RELEASE.jar    密码:shb3

spring-core-5.0.8.RELEASE.jar    密码:gdwj

log4j-1.2.17.jar    密码:ed0o

commons-logging-1.2.jar    密码:rutj

Spring核心配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
">
	<bean id="helloSpring" class="HelloSpring">
		<property name="who">
			<value>Spring</value>
		</property>
	</bean>
</beans>

实体类:

public class HelloSpring {
	private String who = null;
	
	public void print() {
		System.out.println("Hello," + who);
	}
	public String getWho() {
		return who;
	}
	public void setWho(String who) {
		this.who = who;
	}
}

junit测试:

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test {
	@Test
	public void testHelloSpring() {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-mybatis.xml");
		HelloSpring helloSpring = (HelloSpring)context.getBean("helloSpring");
		helloSpring.print();
	}
}

测试结果:

猜你喜欢

转载自blog.csdn.net/qq_42726314/article/details/82821289
今日推荐