Spring Framework Documentation-Core Technologies

2024-01-14 15:58

本文主要是介绍Spring Framework Documentation-Core Technologies,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 

这部分参考文档讲解了Spring框架绝对必要的组成部分。

在这之中最重要的就是spring框架的控制反转(IoC)容器。彻底处理好IoC容器之后,对面向切面编程(AOP)技术的掌握将必不可少。Spring框架有自己的AOP框架,这个框架在概念方面很容易理解,并且成功解决了j2ee中80%的AOP需求。

Spring对AspectJ的集成在本文也有讲到。AspectJ是j2ee领域对AOP最成熟也是特性最丰富的实现。

  • 1.IOC容器

1.1.对Spring IOC容器和beans的介绍

本章讲解了Spring框架的实现和控制反转的规则。控制反转也被理解成依赖注入(DI)。这是一些对象定义其依赖的过程。这种依赖,是这些对象需要调用的其他对象。定义这些依赖要么通过构造函数参数传递来实现,要么通过工厂方法参数传递来实现,再或者是先通过构造方法或者工厂方法产生实例,然后通过设置对象的实例的一些属性来实现。在创建bean的时候,Spring IoC容器会注入这些依赖。这是根本意义上的反转,也就是所谓的控制反转:这个过程原来是bean自己使用类的直接构造函数或者类似于“Service Locator pattern”的机制来控制自己的初始化和依赖内容的定位。

org.springframework.beans和org.springframework.context这两个包是Spring框架IoC容器的基础。前者中的BeanFactory接口提供了能够管理任何类型对象的先进的配置机理。ApplicationContext是BeanFactory接口的一个子接口。它针对Spring的AOP特性增加了更加可用的集成:信息资源处理(在国际化中的使用)、时间发布、应用层确切的上下文例如专门提供给web 应用的WebApplicationContext接口。

简而言之,BeanFactory接口提供了配置框架和基本的功能而ApplicationContext接口又提供了更多针对企业开发的功能。ApplicationContext是BeanFactory的一个完全意义上的超集,在本章我们只使用ApplicationContext进行讨论。想要只用BeanFactory的更多用法自己去看文档(The BeanFactory.)吧。

在Spring的项目中,那些在你的应用中处于“脊梁骨”级别并且收录在Spring IoC容器中管理的对象被称作bean。一个bean是指一个被Spring IoC容器初始化、组装、管理的对象。但是从另一个角度看,bean只是你所开发的应用中众多对象中的一个。beans和它的依赖与容器所使用的“配置元数据”相互映照。

1.2 容器概览

org.springframework.context.ApplicationContext这个接口代表了IoC容器,负责完成前面所提到的bean的初始化、配置和装配。容器通过读取配置元数据来获取对哪些类进行初始化、配置和装配的指令。配置元数据在xml、java注解或者java代码中体现。配置元数据使你能够表示那些组成你的应用的对象和它们之间丰富的相互依赖关系。

Spring中有几个随取随用的ApplicationContext的实现。在独立应用中,创建一个 ClassPathXmlApplicationContext或者FileSystemXmlApplicationContext的示例很常见。尽管xml是定义配置元数据的传统格式,但是只要提供少量xml配置来声明使用附加的元数据格式,你也能够通过注解和java代码作为元数据来对容器发出指令。

在大多数应用场景中,并不需要具体的用户代码来实例化一个或者多个Spring IoC容器例如,在一个web应用场景中,应用中的web.xml文件中只需要一个大概8行的模板web descriptor XML语句就足够满足创建容器的需求。如果你正在使用装备了Spring工具套装了eclipse开发环境,那你仅仅只需要动几下鼠标和键盘就能够生成一个上面的模板配置。

下面的图表在一个很高的层次展示了Spring是怎么工作的。你的应用中的java 类通过配置元数据被结合到一起。因此在ApplicationContext被创建和初始化之后,你就得到了一个完全配置好的可执行的系统或者应用。

 

1.2.1配置元数据(Configuration metadata)

正如前面的图表所示,Spring IoC容器会用到某种格式的配置元数据;这个配置元数据会展示你作为开发者想要Spring容器如何初始化、配置、装配你的应用中的对象。

配置元数据通常是通过简单直观的xml格式来提供的,这也是本章用来讲述Spring IoC容器关键概念和特性的配置元数据格式。

注:XML并不是配置元数据的唯一格式。Spring IoC容器本身和配置元数据的书写形式完全解耦。最近很多开发者选择基于Java代码的配置形式来开发应用。

想要使用其他的元数据格式,可以参考以下链接:

Annotation-based configuration(基于注解的配置):Spring 2.5引入了基于注解的配置元数据。

Java-based configuration(基于java的配置):从Spring 3.0起,许多由Spring JavaConfig项目提供的特性被引入了Spring框架。因此你可以在的项目代码之外通过java语言而不是XML语言来定义beans(配置元数据中的定义信息)。要使用这些新特性,参见@Configuration@Bean@Import@DependsOn这些注解。

Spring的配置至少包含一个但是一般不止一个将要给容器处理的bean的定义。基于XML的配置元数据使用包含在<beans/>元素中的<bean/>元素来配置这些beans。基于java的配置元数据通常在一个包含注解@Configuration的java类中使用@Bean注解配置bean。

这些配置与实际构成你的应用的对象相对应。通常你会定义服务层对象、数据访问层对象、展示层对象例如Struts的Action 实例,框架对象例如Hibernate的SessionFactories,JMS Queues,等等。通常我们不会在容器中配置domain对象,应为创建和装载domain对象通常是dao对象和业务逻辑的事情。但是,使用集成了AspectJ的Spring框架,你将能够配置在IoC容器控制范围之外创建的对象,详情参见Using AspectJ to dependency-inject domain objects with Spring。

下面的例子展示了基于XML的配置元数据的基本结构。

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="..." class="..."><!-- collaborators and configuration for this bean go here --></bean><bean id="..." class="..."><!-- collaborators and configuration for this bean go here --></bean><!-- more bean definitions go here --></beans>

这里的id属性是用来区分不同的bean定义的。class定义了bean的类型,必须使用完全规范化的类名。id属性的值可以引用合作的对象。id引用合作对象的xml在本例中并没有显示;参见Dependencies来获取更多信息。

 

  • 2.资源
  • 3.验证、数据绑定和类型转化
  • 4.Spring表达语言
  • 5.使用Spring面向切面编程
  • 6.Spring AOP的API
  • 7.Null的安全问题
  • 8.数据缓存和编码

 

这篇关于Spring Framework Documentation-Core Technologies的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605718

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S