spring用到的设计模式

这篇具有很好参考价值的文章主要介绍了spring用到的设计模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、单例模式

在Spring中,默认情况下,Spring容器中的所有Bean都是单例(Singleton)的,也就是说,Spring容器中每个Bean的实例只有一个。这是因为Spring默认使用单例模式来创建Bean,确保每个Bean在整个应用中只有一个实例,从而提高应用性能和资源利用率。

在Spring中,单例 Bean 是 Spring ApplicationContext 中的默认作用域,意味着每个 Spring 容器中,只会创建一个 Bean 实例。单例 Bean 的生存期是长期的,也就是在 Spring 的 ApplicationContext 容器规定的范围内,单例 Bean 只生成一次,所以也被称为容器 Bean。

在Spring配置文件中,既可以使用XML配置,在Bean配置中设置scope=“singleton”,也可以使用Java注解,在Bean类上添加@Scope(“singleton”),来将一个Bean设置为单例。

2、原型模式

在Spring中,原型模式是一种创建型设计模式,通常用于创建可重用的对象,以减少对象创建的开销。原型模式与单例模式相反,它不会创建一个对象池或全局状态对象,而是会每次从原型复制一个新的对象,以实现对象的复用。

在Spring中,可以通过配置XML文件或者使用注解来将Bean设置为Prototype作用域,例如在XML中:

<bean id="prototypeBean" class="com.example.PrototypeBean" scope="prototype">

在Java中使用注解:

@Component
@Scope("prototype")
public class PrototypeBean {
   
    // ...
}

无论是在XML中还是使用注解,都需要将Bean的scope属性设置为prototype。

在使用Spring的原型模式时需要注意,由于每次请求都会创建一个新的实例,因此需要自行管理原型实例的资源和状态,以避免可能存在的内存泄漏或数据共享问题。

总之,Spring中的原型模式通过指定Bean的作用域为prototype,可以实现每次请求时创建一个新的实例,避免了对象池和全局状态对象的使用,是一种创建对象的高效方式,常见的应用场景包括在高并发环境下创建对象等。

3、工厂模式

在Spring中,工厂模式是一种创建型设计模式,它提供了一种创建对象的统一接口,通过实现该接口并在工厂类中实现对象的创建、初始化等过程,来实现对象的创建和管理。

在Spring中,工厂模式通常用于创建一些具有相同接口或抽象类的不同类的实例,以达到解耦和复用的目的。Spring中的工厂模式主要有两种形式:BeanFactory和ApplicationContext。

1、BeanFactory
BeanFactory是Spring中最基本的工厂模式实现,它是一个工厂对象的管理容器,通过配置文件或者注解来创建和管理Bean对象,提供了创建、查找、获取以及销毁Bean对象等功能。在使用时,需要直接调用ApplicationContext对象的getBean方法获取Bean实例。

2、ApplicationContext
ApplicationContext是一个伴随着Spring的整个生命周期的对象,它是BeanFactory的子接口,提供了更加强大的功能,如国际化、事件传递、资源管理、配置文件加载等。

4、模板方法

在Spring中,模板方法是一种行为型设计模式,它定义了一个算法的骨架,在不改变算法结构的前提下允许子类重写算法的特定步骤,以适应不同的应用场景。

在Spring中,模板方法模式常常用于实现一些通用的操作,例如数据库操作、事务管理等。模板方法模式通常包含以下几个部分:

1、抽象模板类(Abstract Template):定义了算法骨架以及算法的每个步骤,其中某些方法由子类实现,以允许不同实现。

2、具体模板类(Concrete Template):继承抽象模板类,实现抽象方法,以具体实现算法中的每个步骤。

3、客户端(Client):使用模板方法类中的算法。

在Spring中,模板方法模式可以用于开发数据访问层(DAO)的实现。例如,使用Spring JDBC技术实现数据访问层时,我们可以将常见的操作(如查询、更新、删除等)抽象为模板方法,具体实现交给子类或其他实现类。这样做可以避免重复的代码,并且提供了代码重用和维护的方便性。

Spring中的JdbcTemplate和HibernateTemplate等都是模板方法模式的应用实例。例如,JdbcTemplate的update()方法就是一个模板方法,其中更新操作的细节由传入的PreparedStatementCreator和PreparedStatementSetter对象完成。

总之,Spring中的模板方法模式在很多场景下都得到了广泛的应用,如数据访问、事务管理等。通过封装公共的算法步骤,在具体的实现中允许添加和改变某些步骤,以适应不同的应用场景,提高了代码重用和可维护性,是一种非常有用的设计模式。

5、策略模式:

在Spring中,策略模式是一种行为型设计模式,用于定义一系列算法,并将每个算法封装到一个独立的类中,以使得它们可以互换使用。

在Spring中,经常使用策略模式来实现某些决策过程,如根据不同的条件选择不同的数据源。通常情况下,策略模式有如下三个角色:

1、抽象策略类(Abstract Strategy):定义策略模式的抽象接口或抽象类,是所有具体策略类的父类。
2、具体策略类(Concrete Strategy):实现抽象策略类定义的算法,并实现接口或继承抽象类。

3、环境(context)类:使用具体的策略类来实现具体的操作,维护一个对抽象策略类的引用。

在Spring中,策略模式通常是通过依赖注入来实现的。例如,使用Spring实现简单的策略模式可以如下:

1、创建一个Drivable接口,表示可行驶的类型。

public interface Drivable {
   
    void drive();
}

2、创建两个实现了Drivable接口的类:

@Component("car")
public class Car implements Drivable {
   
    @Override
    public void drive() {
   
        System.out.println("Driving Car...");
    }
}

@Component("bus")
public class Bus implements Drivable {
   
    @Override
    public void drive() {
   
        System.out.println("Driving Bus...");
    }
}

3、创建一个类,它包含一个Drivable类型的依赖,并在内部使用该依赖策略:文章来源地址https://www.toymoban.com/news/detail-472862.html

@Component
public class DriveService {
   
    @Autowired
    @Qualifier("car")
    private Drivable drivable;
    
    public void driveVehicle() {
   
        drivable.drive(

到了这里,关于spring用到的设计模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring学习笔记(二)Spring的控制反转(设计原则)与依赖注入(设计模式)

    是一种设计原则,降低程序代码之间的耦合度 对象由Ioc容器统一管理,当程序需要使用对象时直接从IoC容器中获取。这样对象的控制权就从应用程序转移到了IoC容器 依赖注入是一种消除类之间依赖关系的设计模式。例如,A类要依赖B类,A类不再直接创建B类,而是把这种依赖

    2024年02月19日
    浏览(28)
  • Spring⾥⽤到的设计模式

    Spring 框架是一个广泛应用于企业级 Java 开发的开源框架,它提供了一系列的模块,包括依赖注入、面向切面编程、事务管理等功能,以简化企业级应用的开发。在 Spring 的设计和实现中,采用了多种设计模式来解决不同的问题,提高代码的可维护性、可扩展性和可重用性。

    2024年01月19日
    浏览(31)
  • Spring中的设计模式

    目录 1.Spring中使用到的设计模式有: 2.工厂模式 3.单例模式 4.代理模式 5.模板模式 6.适配器模式         工厂模式:实现IoC容器         单例模式:将bean设置为单例         代理模式:AOP的底层实现         模板模式:比如引入jdbc依赖后出现的jdbcTemplate         适配器模

    2024年02月12日
    浏览(34)
  • 设计模式的分类及Spring中用到的设计模式

    在《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书中,提出了 23 种设计模式,通常称为 GoF(Gang of Four)设计模式。这些设计模式被分为以下三种类型: 创建型模式(Creational Patterns): 工厂方法模式(Factory Method Pattern) 抽象

    2024年02月22日
    浏览(31)
  • 设计模式_spring框架中常用的8种设计模式

    spring框架中常用到的8种设计模式清单如下: 设计模式 使用地方 备注 工厂模式 BeanFactory ApplicationContext 单例模式 Spring中的Bean 代理模式 Spring AOP java反射实现动态代理 模板方法模式 Spring中以Template结尾的类 使用继承的方式实现 观察者模式 Spring事件驱动模型 适配器模式 Spri

    2023年04月08日
    浏览(34)
  • Java设计模式-策略模式-基于Spring实现

    策略模式是一种行为设计模式,它允许在运行时选择算法的行为。它将算法封装在 独立的策略类 中,使得它们可以相互替换,而不影响客户端代码。这种模式通过 将算法的选择从客户端代码中分离出来 ,提供了更大的灵活性和可维护性。 在Java中,策略模式的设计理念可以

    2024年02月08日
    浏览(50)
  • Spring中常见的设计模式

    使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性、更具有灵活、优雅,而Spring中共有九种常见的设计模式 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创

    2024年02月20日
    浏览(22)
  • Spring中使用了哪些设计模式

    1、工厂模式 在各种BeanFactory以及ApplicationContext创建中都用到了。 2、模板模式 在各种BeanFactory以及ApplicationContext实现中也都用到了。 3、代理模式 Spring AOP 利用了AspectJ AOP实现的,AspectJ AOP底层使用了动态代理。 4、策略模式 加载资源文件的方式,使用了不同的方法,如ClassP

    2024年02月09日
    浏览(27)
  • 设计模式——命令模式(Command Pattern)+ Spring相关源码

    类型: 行为型模式 目的: 将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 2.1.1 定义命令类接口 2.1.2 定义命令执行者 2.1.3 被处理对象Stock。 菜鸟教程定义 被处理的对象 是Stock。 2.1.4 封装处理Stock的命令 虽然 Runnable 接口本身并不是一个命令模式

    2024年02月06日
    浏览(33)
  • 设计模式——迭代器模式(Iterator Pattern)+ Spring相关源码

    类型: 行为型模式 目的: 用于顺序访问集合对象的元素,使用者不需要知道集合对象的底层表示。 2.1.1 定义迭代器接口 2.1.2 定义迭代对象接口——用于返回一个迭代器 2.1.3 实现 迭代对象 和 迭代器 2.1.4 使用 迭代器CompositeIterator 创建型模式 结构型模式 1、设计模式——装

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包