Spring框架理解(一)

Spring的基本应用

(一)Spring的概述

(1)什么是Spring

Spring是一个分层的Java SE/EE full-stack(一站式) 轻量级开源框架。它以IOC(控制反转)和AOP(面向切面编程)为内核,使用基本的JavaBean来完成工作。

Spring致力于JavaEE应用各层(表现层、业务逻辑层、持久层)的解决方案:
表现层:提供了Spring MVC 以及 Struts 框架的整合功能。
逻辑层: 管理事务、记录日志等。
持久层:提供了 Hibernate、MyBatis、JdbcTemplate 的整合功能。

(2)Spring的优点

  1. 非侵入式设计(non_invasive)
    Spring是一种非侵入式框架,它可以使应用程序代码对框架的依赖最小化。
  2. 方便解耦、简化开发
    Spring就是一个大工厂,将所有的对象的创建依赖关系的维护工作 都交给Spring容器,降低了各组件之间的耦合性。
  3. 支持AOP
    Spring提供了对AOP的支持,她允许将一些通用任务进行集中式处理,从而提高了程序的复用性。
    注:AOP主要意图:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。
  4. 支持声明式事务处理
    通过配置就可以完成对事务的管理,无需手动编程。
  5. 方便程序的测试
    Spring提供了Junit4的支持
  6. 方便集成各种优秀框架
    内部提供了对各种优秀框架的直接支持
  7. 降低了JavaEE API的使用难度
    Spring对JavaEE开发中非常难用的API进行了封装。

(3)Spring的体系结构

在这里插入图片描述

(4)Spring的下载

  1. Spring框架包

包名是spring-framework-5.1.9.RELEASE-dist.zip
下载路径:https://repo.spring.io/release/org/springframework/spring/5.1.9.RELEASE/
下载后解压文件,如下图
在这里插入图片描述

  • docs文件夹包含Spring的API文档和开发规范
  • libs文件夹保函jar包
  • schema文件夹包含所需要的schema文件

2.第三方依赖包
commons-logging-1.2.jar

(二)Spring的核心容器

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

(1)BeanFactory(实际开发中并不多用)

BeanFactory由org.springframework.beans.facytory.BeanFactory接口定义,是基础类型的IOC容器。主要负责初始化各种Bean.

(2)ApplicationContext

由org.springframework.context.ApplicationContext接口定义。由于是BeanFactory的子接口,所以不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、时间传播等方面的支持。
创建ApplicationContext接口的两种方法

  1. 通过ClassPathXmlApplicationContext创建(通常采用)
    ApplicationContext context = new ClassPathXmlApplicationContext(String configLocation);
    configLocation参数用于指定Spring配置文件的名称和位置(类路径)

  2. 通过FileSystemXmlApplicationContext创建
    ApplicationContext context = new FileSystemXmlApplicationContext(String configLocation)
    configLocation通过参数获取文件路径
    使用spring框架时,可以实例化两个类的其中任意一个,但通常JAVA项目使用ClassPathXmlApplicationContext。

  3. 而在web项目,使用Web服务器来完成。通常使用ContextLoaderListender来实现,只需要在web.xml中添加代码在这里插入图片描述

(三)Spring的入门程序

(1)创建web项目chapter01,并导入spring的4个核心jar包和logging日志包

在这里插入图片描述

(2)在src下创建接口UserDao以及实现类UserDaoImpl,实现方法在这里插入图片描述

(3)在src下创建applicationContext.xml文件在这里插入图片描述

注:spring约束配置可参考《Spring备注说明(约束条件)》讲解。
本文链接: https://blog.csdn.net/qq_38618691/article/details/99946966

(4)添加测试类

在这里插入图片描述

(四)依赖注入

(1)依赖注入概念

依赖注入(Dependency injection 简称DI) 与控制反转(IoC)含义相同。
当某个java对象(调用者)需要调用另一个java对象(被调用者,被依赖对象),在传统模式下,会采用“new 被调用者”方式来创建对象。在这里插入图片描述在使用spring框架之后,对象的实例由Spring容器创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样控制权由应用代码转移到了Spring容器,控制权发生了反转,这就是Spring的控制反转(IoC)
在这里插入图片描述

依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;
而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。

(2)依赖注入的实现方式

  1. 属性setter方法注入:指 loC 容器使用 setter 方法注入被依赖的实例 。 通过调用无参构造
    器或无参静态工厂方法实例化 Bean 后,调用该 Bean 的 setter 方法,即可实现基于 setter 方法
    的依赖注入 。
  2. 构造方法注入:指 loC 容器使用构造方法注入被依赖的实例 。 基于构造方法的依赖注入通
    过调用带参数的构造方法来实现,每个参数代表着一个依赖。

以setter方法为例

1、导包
2、创建UserDao, UserService 接口以及实现类UserServiceImpl
在这里插入图片描述
在这里插入图片描述在这里插入图片描述3、在src文件夹下配置applicationContext.xml文件
在这里插入图片描述

注:property标签中的name属性值与UserServiceImpl类中的UserDao名称一致。
ref属性值与下面的bean  id值一致,指向目标bean。

4、编写测试类

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring框架是一个开源的Java应用程序开发框架,它提供了一系列的解决方案和工具,用于简化企业级应用程序的开发。以下是对Spring框架的一些理解: 1. 轻量级:Spring框架的设计目标之一是保持轻量级,它不会强制引入过多的依赖或复杂的配置。使用Spring,你可以选择性地使用各个模块和功能,以满足你的需求。 2. 控制反转(IoC):Spring框架通过控制反转(IoC)容器来管理对象的生命周期和依赖关系。你可以通过配置文件或注解来描述对象之间的依赖关系,而不需要显式地在代码中进行硬编码。这样可以提高代码的可维护性和可测试性。 3. 依赖注入(DI):依赖注入是控制反转的一种实现方式,它使得对象不需要自己创建或管理它们所依赖的对象。Spring框架通过依赖注入将所需的依赖关系注入到对象中,使得对象之间解耦,并且方便进行单元测试和模块化开发。 4. 面向切面编程(AOP):Spring框架提供了面向切面编程的支持,使得你可以将横切关注点(例如日志记录、事务管理等)从核心业务逻辑中分离出来,并通过配置文件或注解的方式进行统一管理。 5. 企业级开发支持:Spring框架提供了许多企业级开发的功能和扩展,如集成事务管理、安全性、远程访问、缓存管理等。这些功能可以帮助开发者快速构建高可靠性、可扩展性和安全性的企业级应用程序。 总结来说,Spring框架是一个强大而灵活的Java开发框架,它通过控制反转、依赖注入和面向切面编程等特性,提供了一种优雅的方式来构建和管理Java应用程序。它的设计目标是简化开发过程,提高代码的可维护性和可测试性,同时提供了丰富的企业级功能和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值