首页 > 其他分享 >Spring框架

Spring框架

时间:2024-09-29 10:50:14浏览次数:3  
标签:容器 框架 配置文件 spring 配置 Bean Spring

1.Spring 简介 (https://spring.io)

Spring是一个开源的轻量级的容器框架。

Spring之父:Rod Johnson

设计宗旨:不发明新的技术,让现有技术使用更方便。

Spring Framework(Spring框架)是一个开源的应用程序框架,由SpringSource公司开发,最初是为了解决企业级开发中各种常见问题而创建的。它提供了很多功能,例如:依赖注入(Dependency Injection)、面向切面编程(AOP)、声明式事务管理(TX)等。其主要目标是使企业级应用程序的开发变得更加简单和快速,并且Spring框架被广泛应用于Java企业开发领域。

2.Spring 体系架构

3.Spring核心功能

   IOC/DI : 控制反转/依赖注入

   AOP :面向切面编程

   TX:声明式事务

4.IOC

   IOC: Inversion of Control   控制反转

   概念:原先由程序员通过new关键字创建对象事情,转交给Spring负责。

         控制反转中控制:控制类的对象

         控制反转中反转:转交给Spring

   作用:解耦合

   解除了程序员和对象管理之间的耦合。

IoC 主要是针对对象的创建和调用控制而言的,也就是说,当应用程序需要使用一个对象时,不再是应用程序直接创建该对象,而是由 IoC 容器来创建和管理,即控制权由应用程序转移到 IoC 容器中,也就是“反转”了控制权。这种方式基本上是通过依赖查找的方式来实现的,即 IoC 容器维护着构成应用程序的对象,并负责创建这些对象。

5.SpringIoC容器介绍

Spring IoC 容器,负责实例化、配置和组装 bean(组件)。容器通过读取配置元数据来获取有关要实例化、配置和组装组件的指令。配置元数据以 XML、Java 注解或 Java 代码形式表现。它允许表达组成应用程序的组件以及这些组件之间丰富的相互依赖关系。

**SpringIoc容器接口**:

`BeanFactory` 接口提供了一种高级配置机制,能够管理任何类型的对象,它是SpringIoC容器标准化超接口!

`ApplicationContext` 是 `BeanFactory` 的子接口。它扩展了以下功能:

- 更容易与 Spring 的 AOP 功能集成

- 消息资源处理(用于国际化)

- 特定于应用程序给予此接口实现,例如Web 应用程序的 `WebApplicationContext`

ApplicationContext容器实现类:

6.Spring框架提供了多种配置方式:XML配置方式、注解方式和Java配置类方式

  1. XML配置方式:是Spring框架最早的配置方式之一,通过在XML文件中定义Bean及其依赖关系、Bean的作用域等信息,让Spring IoC容器来管理Bean之间的依赖关系。该方式从Spring框架的第一版开始提供支持。

  1. 注解方式:从Spring 2.5版本开始提供支持,可以通过在Bean类上使用注解来代替XML配置文件中的配置信息。通过在Bean类上加上相应的注解(如@Component, @Service, @Autowired等),将Bean注册到Spring IoC容器中,这样Spring IoC容器就可以管理这些Bean之间的依赖关系。

3. **Java配置类**方式:从Spring 3.0版本开始提供支持,通过Java类来定义Bean、Bean之间的依赖关系和配置信息,从而代替XML配置文件的方式。Java配置类是一种使用Java编写配置信息的方式,通过@Configuration、@Bean等注解来实现Bean和依赖关系的配置。

为了迎合当下开发环境,我们将以**配置类+注解方式**为主进行讲解!

7.Spring 项目环境搭建  (java项目/web项目)

7.1采用maven创建java项目,导入spring的坐标

<!--当你引入Spring Context依赖之后,表示将Spring的基础依赖引入了-->

  <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-context</artifactId>

    <version>6.0.6</version>

</dependency>

  <!--junit5测试-->

  <dependency>

    <groupId>org.junit.jupiter</groupId>

    <artifactId>junit-jupiter-api</artifactId>

    <version>5.3.1</version>

    <scope>test</scope>

</dependency>

  <!-- 日志 , 会自动传递slf4j门面-->

  <dependency>

    <groupId>ch.qos.logback</groupId>

    <artifactId>logback-classic</artifactId>

    <version>1.2.3</version>

</dependency>
<!--lombok -->

  <dependency>

    <groupId>org.projectlombok</groupId>

    <artifactId>lombok</artifactId>

    <version>1.18.26</version>

</dependency>

   注意:引入日志配置文件logback.xml 到 resources目录下

7.2 创建spring配置文件

resources-->new-->XML Configuration File-->

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

  

</beans>
  7.3 创建实体类
@Data

  public class Student {

    private String sno;

    private String name;

    private int age;

}
 7.4 配置文件配置<bean>对象标签
<!--

   bean:一个组件对象,由spring创建对象,并交给spring容器管理

   id: 从容器获取对象唯一标识

   class: 创建对象的类的全限定名

 -->

  <bean id="stu" class="com.bdqn.pojo.Student"></bean>
 7.5 单元测试
@Test

public  void  test01() {

       //加载spring配置文件,返回spring容器

       ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

        //从spring容器中获取对象

       Student stu=ac.getBean("stu",Student.class);

       System.out.println(stu);

    }

}

   总结:

1.默认配置文件加载时,调用无参构造创建对象,并交给SpringIOC容器管理。

2.设置延迟初始化对象创建

   属性:<bean  lazy-init="true" > 一个bean对象有效

         <beans default-lazy-init="true"> 所有bean有效

  1. 默认情况下,单例默认,不管获取多少次都是同一个对象。

        属性: <bean scope="singleton"> 单例模式

<bean scope="prototype"> 多例模式

8.Spring创建bean实例化三种方式

           8.1构造方法实例化

1.编写静态工厂类和创建实例对象的静态方法

public class StudentStaticFactory {

    public static Student createStudent() {

        return new Student();

    }

}

          8.2配置文件

<!--静态工厂创建bean-->    

     <bean id="stu4" class="util.StudentStaticFactory" factory-method="createStudent"></bean>

<!--实例工厂创建bean-->    

     <bean id="studentFactory" class="util.StudentFactory"></bean>

     <bean id="stu3" factory-bean="studentFactory" factory-method="createStudent"></bean>

         8.3静态工厂实例化bean

public class StudentStaticFactory {

    public static Student createStudent() {

        return new Student();

    }

}

         2.配置文件

<!--静态工厂创建bean-->    

     <bean id="stu4" class="util.StudentStaticFactory" factory-method="createStudent"></bean>

标签:容器,框架,配置文件,spring,配置,Bean,Spring
From: https://blog.csdn.net/2301_80220193/article/details/142630618

相关文章

  • .Net Web项目中,实现轻量级本地事件总线 框架
    .NetWeb项目中,实现轻量级本地事件总线框架 一、事件总线设计方案1.1、事件总线的概念事件总线是一个事件管理器,负责统一处理系统中所有事件的发布和订阅。事件总线模式通过提供一种松耦合的方式来促进系统内部的业务模块之间的通信,从而增强系统的灵活性和可维护性。1......
  • Spring Cloud全解析:服务调用之多个FeignClient调用服务名称相同
    name相同问题在使用@FeignClient的时候,发现多个@FeignClient中的name相同就无法启动,当然了,这是因为bean名称重复了,创建bean的时候报的错,但是如何解决呢?Abeanwiththatnamehasalreadybeendefinedandoverridingisdisabled可以配置不同的contextId来进行解决@Feign......
  • [含文档+PPT+源码等]精品基于springboot实现的原生Andriod高校师生二手用品交易系统AP
    基于SpringBoot实现的原生Android高校师生二手用品交易系统APP的背景主要可以从以下几个方面来阐述:一、社会与环保背景资源循环利用与环保意识:随着经济的快速发展和人们生活水平的提高,闲置物品的数量不断增加。高校作为知识和文化的聚集地,师生们的环保意识日益增强,对于资源......
  • [含文档+PPT+源码等]精品基于springboot实现的原生Andriod校园二手电子物品交易系统
    基于SpringBoot实现的原生Android校园二手电子物品交易系统的背景可以从多个方面来阐述,以下是一个详细的背景分析:一、环保与可持续发展的需求绿色消费理念:在全球环保意识日益增强的背景下,绿色消费和可持续发展成为重要的社会议题。校园二手电子物品交易系统的建立,旨在推动资......
  • SpringBoot+Docker +Nginx 部署前后端项目
    部署SpringBoot项目(通关版)一、概述使用java-jar命令直接部署项目的JAR包和使用Docker制作镜像进行部署是两种常见的部署方式。以下是对这两种方式的概述和简要的优劣势分析:1.1、使用java-jar命令直接部署项目的JAR包概述:通过java-jar直接部署项目的JAR包是最简单直......
  • 【含文档+PPT+源码】基于SpringBoot的体育馆管理系统的设计与实现
    项目背景与意义近年来,随着人们生活水平的提高和健康意识的增强,体育馆作为提供体育锻炼和休闲娱乐的重要场所,其使用频率和管理难度也在不断增加。传统的体育馆管理模式通常依赖于人工记录和手动操作,不仅效率低下,而且容易出现错误和遗漏,难以适应现代社会的快节奏和高效率要求。......
  • 【含文档+PPT+源码】基于SpringCloud微服务的船舶交易平台的设计与实现
    项目背景与意义随着全球经济的快速发展,航运业成为国际贸易中不可或缺的一环。船舶交易平台作为航运业的重要组成部分,为船舶买卖、租赁等交易提供了便利和高效的途径。在传统的船舶交易中,买卖双方往往需要通过中介机构来进行交易,这不仅增加了交易的时间和成本,还存在信息不透明......
  • 主流前端框架的详细对比和选择建议
    前端框架的选择对于现代Web开发至关重要,影响到开发效率、代码可维护性以及用户体验。以下是对几种主流前端框架的详细对比和选择建议。一、前端框架概述前端框架是为了简化Web开发而设计的一组工具和库,帮助开发者构建用户界面、管理状态以及处理与服务器的交互。常见的前端框......
  • Spring Boot 进阶-Spring Boot的全局异常处理机制详解
      我们知道在软件运行的过程中,总会出现各种各样的问题,各种各样的异常,而程序员的主要任务之一就是解决在程序运行过程中出现的这些异常。在很多程序员开发的代码中我们会看到在关键的地方为了保证程序能够有一个正常的反馈,大量地使用了trycatchfinally语句。  大量的......
  • SpringBoot-MybatisPlus项目中,在控制台查看sql执行日志的方法
    SpringBoot-MybatisPlus项目中,在控制台查看sql执行日志的方法springboot、maven、mybatisplus、sql、日志、控制台、console、log背景在baomidou.com学习mybatisPlus入门的过程中,接触到表名和关键词冲突,加注解加表名引号后问题解决。不过我还想,在控制台打印一下执行......