首页 > 其他分享 >这是一个测试文章

这是一个测试文章

时间:2023-01-16 21:26:37浏览次数:40  
标签:容器 这是 ApplicationContext Spring 配置 bean 实例 测试 文章

spring框架学习(基于官方文档学习)

springFramework

1、了解spring

tip:从 Spring Framework 6.0 开始,Spring 需要 Java 17+

1.1、概述

  • Spring 使创建 Java 企业应用程序变得容易

  • Spring支持的应用场景非常广泛

  • Spring 是开源的

1.2、什么是spring(春天)

"spring"可以用来指代 Spring Framework 项目本身,它是一切的起点

Spring Framework 分为模块。核心是核心容器的模块,包括配置模型和依赖注入机制

1.3、历史

有兴趣去官网上看或者去网上搜一下

1.4、设计理念

Spring 框架的指导原则:

  • 在每个级别提供选择。Spring 让您尽可能晚地推迟设计决策
  • 包容不同的观点
  • 保持强大的向后兼容性
  • 关心API设计
  • 为代码质量设定高标准

2、核心技术

2.1、IOC容器

2.1.1、Spring IOC容器和Bean介绍
  • 控制反转 (IoC) 原则的 Spring Framework 实现,IoC 也称为依赖注入 (DI)

  • 在这个过程中,对象仅通过构造函数参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后设置的属性来定义它们的依赖关系(即它们使用的其他对象),然后容器在创建 bean 时注入这些依赖项

  • 这个过程基本上是 bean 本身的逆过程(因此得名,控制反转),它通过使用类的直接构造或服务定位器模式等机制来控制其依赖项的实例化或位置

通俗来说就是IOC就是将控制对象创建的对象是创建对象的人,而不是中间有一个创建对象的过程

实现原理:

  • org.springframework.beansorg.springframework.context包是 Spring Framework 的 IoC 容器的基础

  • BeanFactory 接口提供了一种高级配置机制,能够管理任何类型的对象。 ApplicationContextBeanFactory的子接口

  • BeanFactory提供了配置框架和基本功能,并在ApplicationContext添加了更多企业特定的功能

在 Spring 中,构成应用程序主干并由 Spring IoC 容器管理的对象称为 bean,bean 是由 Spring IoC 容器实例化、组装和管理的对象。否则,bean 只是应用程序中众多对象中的一个。Bean 以及它们之间的依赖关系反映在容器使用的配置元数据

针对BeanFactory和ApplicationContext两个接口写一点小小的了解

  • 这两个接口是IOC容器很重要的一个东西,比如ApplicationContext的实现类ClassPathXmlApplicationContext就是我们实例化每一个bean的一个实现类,这个在后面会提到
  • 对于BeanFactory这个结构里面会有一个method,getBean,这个方法顾名思义,就是获取bean对象
2.1.2、容器概述

ApplicationContext就是一个容器,这个容器负责实例化,配置和组装bean,通过配置元数据获取相应的实例化的数据,可以通过XML,java注释等来进行配置

ApplicationContext,Spring 提供了该接口的多个实现

在独立应用程序中,通常创建 ClassPathXmlApplicationContext 或FileSystemXmlApplicationContext(通常不用这个)

虽然 XML 一直是定义配置元数据的传统格式,但可以通过提供少量 XML 配置以声明方式启用对这些额外元数据格式的支持,从而指示容器使用 Java 注释或代码作为元数据格式,这个就是通过注释来装配bean

容器的大致图样

2.1.3、配置元数据

Spring IOC 容器使用一种形式进行配置元数据。此配置元数据表示作为应用程序开发人员如何告诉 Spring 容器在您的应用程序中实例化、配置和组装对象(就是通过配置文件来进行对象的实例化,实例化过程由spring容器来进行)

这里首先进行最基本的一个配置方式的讲解-XML,之后会有基于java configuration和注释的形式进行配置,这种使用场景比较广泛

  • Spring 配置包含至少一个且通常不止一个容器必须管理的 bean 定义

  • 基于 XML 的配置元数据将这些 bean 配置为<bean/>元素是顶级元素<beans/>的一个子元素

  • 而Java 配置通常使用@Bean在类中使用带注释的方法@Configuration来进行配置

  • 这些 bean 定义对应于构成的应用程序的实际对象

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/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="..." class="..."> (1) (2)
        <!-- 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>

(1):该id属性是一个字符串,用于标识单个 bean 定义

(2):该class属性定义 bean 的类型并使用完全限定的类名

2.1.4、实例化容器

提供给构造函数的位置路径或路径ApplicationContext是资源字符串,让容器从各种外部资源(如本地文件系统、Java CLASSPATH等)加载配置元数据

实例化容器格式,使用ApplicationContext接口中的ClassPathXmlApplicationContext实现类

ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

至于ClassPathXmlApplicationContext这个实现类可以在API文档中查看相应的方法,这个就是使用了其中的一个构造方法,读取相应的配置文件

services.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/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- services -->

    <bean id="petStore" class="org.springframework.samples.jpetstore.services.PetStoreServiceImpl">
        <property name="accountDao" ref="accountDao"/>
        <property name="itemDao" ref="itemDao"/>
        <!-- additional collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions for services go here -->

</beans>

daos.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/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="accountDao"
        class="org.springframework.samples.jpetstore.dao.jpa.JpaAccountDao">
        <!-- additional collaborators and configuration for this bean go here -->
    </bean>

    <bean id="itemDao" class="org.springframework.samples.jpetstore.dao.jpa.JpaItemDao">
        <!-- additional collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions for data access objects go here -->

</beans>

在前面的示例中,服务层由PetStoreServiceImpl类和类型为JpaAccountDao和JpaItemDao的两个数据访问对象组成(基于 JPA 对象关系映射标准)

  • property name元素是指JavaBean属性的名称,元素ref是指另一个bean定义的名称
  • id和元素之间的这种联系ref表达了协作对象之间的依赖关系

标签:容器,这是,ApplicationContext,Spring,配置,bean,实例,测试,文章
From: https://www.cnblogs.com/eatingyugan/p/17056300.html

相关文章

  • 分区表新增分区测试
    1.无MAX分区且非自动分区且全部分区索引1.1.环境准备--建表CREATETABLEMONKEY.TEST_PART_NULL_NORMAL(IDNUMBER,STU_NAMEVARCHAR2(100),STU_A......
  • python—测试工具UI实践(1)—需求分析及环境部署
    环境部署:安装python安装pycharm工作任务:需求:研发一个测试工具,构造随机测试数据技术要求:基于python语言开发成果物:正常使用分享交流:分享开发过程中的收获 ......
  • 思科模拟器:简易校园网组网方案设计、实现、测试及抓包分析
    目录1.题目:校园组网方案设计...32.需求分析...33.理论介绍...44.详细设计...54.1设备的选择与配置...54.1.1交换机与路由器的选择...54.1.2出口路由器添加串......
  • MeterSphere UI 测试脚本的使用
    目前MeterSphereUI测试仅支持js脚本,设置的脚本将在浏览器中执行。以脚本有返回值和无返回值两种情况为例。1js脚本有返回值情况1.1脚本类型:同步,设置变量:有返回值(以下脚......
  • 自动化测试验证码问题
    1.验证码作用不少网站在用户登录、用户提交信息等登录和输入的页面上使用了验证码技术。验证码技术可以有效防止恶意用户对网站的滥用,使得网站可以有效避免用户信息失窃......
  • 安全技术文章与社区
    公众号黑白之道FreeBuf看雪学苑M01NTeam安全研究GoSSIPNISL实验室HelloGithub阮一峰的网络日志社区阿尔法实验室安全内参SecIn信息安全技术社区安全客Fr......
  • MeterSphere 接口测试环境/环境组+动态数据源使用
    MeterSphere接口测试支持环境配置,灵活配置运行环境,好多小伙伴在使用过程中,对http配置的搭配以及环境组的使用场景是有疑惑的,下面为大家介绍一下1.环境配置1.1通用配置......
  • 8.一个项目实战(下载博客文章)
    专栏地址ʅ(‾◡◝)ʃ前言要写一个下载器,首先要实现一个接口函数,而这个函数可以对请求的数据进行处理也就是爬虫,其次才是写图形化界面接口的实现其实CSDN的浏览器页面的......
  • 亚马逊手电筒和头灯UL1576测试报告详情
    亚马逊会不定期进行AI抽查,一旦被亚马逊抽查到,亚马逊要求在规定的时间内提交以下信息:公司名称卖家/供应商编号电子邮件地址电话号码您申请销售电热毯的ASIN列表商品图片和手......
  • Windows 资产测试可连接性
    概述本文主要介绍如Windows资产,测试资产连接性的方法。(推送系统用户、批量改密的前置条件)实现方案Windows资产默认不支持测试资产连接性、推送系统用户、批量改密。要想......