iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >spring使用策略模式如何实现多种场景登录方式
  • 566
分享到

spring使用策略模式如何实现多种场景登录方式

2023-06-22 03:06:05 566人浏览 安东尼
摘要

这篇文章给大家介绍spring使用策略模式如何实现多种场景登录方式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 @Autowired注解可以帮我们自动注入我们想要的 Bean。如果只是简单使用@Autowi

这篇文章给大家介绍spring使用策略模式如何实现多种场景登录方式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

 @Autowired注解可以帮我们自动注入我们想要的 Bean。
如果只是简单使用@Autowired会遇到spring ioc容器中一个接口有多个实现的情况,spring无法识别具体的实现类,如果不是策略模式,我们可以进行具体的指定@Qualifier和@primary来避免bean冲突的情况。但在策略模式中是不行的。
而除了这个基本功能之外, @Autowired 还有更加强大的功能,还可以注入指定类型的数组,List/Set 集合,甚至还可以是 Map 对象。
为每个具体的实现类添加了一个编号,方便识别,具体可以根据场景选择,这里只是模拟。

登录service

@Servicepublic class LoginService {    @Autowired    Set<Login> loginSet;//使用了Set     Map<Integer,Login> loginMap;    public User login(User userLogin) {        Login login=loginMap.get(userLogin.getChannelNo());        return login.login(userLogin);    }    @PostConstruct    public void init() {        loginMap = new HashMap<>();        for (Login login : loginSet) {            loginMap.put(login.channel(), login);        }    }}

源码策略接口

@Componentpublic interface Login {    User login(User userLogin);    Integer channel();}

具体实现类---用户密码登录

@Componentpublic class PassWordLogin implements Login {    @Autowired    LoginDao loginDao;    @Override    public User login(User userLogin) {        return loginDao.PasswordLogin(userLogin.getUsername(),userLogin.getPassword());    }    @Override    public Integer channel() {        return 2;    }}

具体实现类---邮箱登录

@Componentpublic class EmailLogin implements Login {    @Autowired    LoginDao loginDao;    @Override    public User login(User userLogin) {        return loginDao.EmailLogin(userLogin.getEmail(),userLogin.getPassword());    }    @Override    public Integer channel() {        return 3;    }}

具体实现类---邮箱登录

@Componentpublic class PhoneLogin implements Login {    @Autowired    LoginDao loginDao;    @Override    public User login(User userLogin) {        return loginDao.PhoneLogin(userLogin.getPhone(),userLogin.getPassword());    }    @Override    public Integer channel() {        return 1;    }}

简单模拟登录sql

@Mapper@Repositorypublic interface LoginDao {    @Select("select * from user where phone=#{phone} and password=#{password}")    User PhoneLogin(String phone,String password);    @Select("select * from user where username=#{username} and password=#{password}")    User PasswordLogin(String username,String password);    @Select("select * from user where email=#{email} and password=#{password}")    User EmailLogin(String email,String password);}

关于spring使用策略模式如何实现多种场景登录方式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: spring使用策略模式如何实现多种场景登录方式

本文链接: https://www.lsjlt.com/news/302079.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • spring使用策略模式如何实现多种场景登录方式
    这篇文章给大家介绍spring使用策略模式如何实现多种场景登录方式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 @Autowired注解可以帮我们自动注入我们想要的 Bean。如果只是简单使用@Autowi...
    99+
    2023-06-22
  • 浅谈spring使用策略模式实现多种场景登录方式
     @Autowired注解可以帮我们自动注入我们想要的 Bean。 如果只是简单使用@Autowired会遇到spring IOC容器中一个接口有多个实现的情况,spring无法识别...
    99+
    2024-04-02
  • 如何使用Spring实现策略模式
    本篇内容介绍了“如何使用Spring实现策略模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring 中 @Autowired注解,大...
    99+
    2023-06-27
  • Python模拟登录多种实现方式
    Python模拟登录多种实现方式 基于Python 3.6 #coding:utf-8 import sys import io import urllib.request import http.cookiejar #####...
    99+
    2023-01-31
    多种 方式 Python
  • Java中策略设计模式的实现及应用场景
    目录介绍实现总结介绍 Java策略模式(Strategy Pattern)是一种行为设计模式,它允许再运行时动态选择算法的行为.策略模式通过将算法封装在可互换的策略对象中,使得客户端...
    99+
    2023-05-17
    Java策略设计模式 Java设计模式 Java策略模式
  • Spring boot 运用策略模式实现避免多次使用if
    目录前言环境配置实现目标准备策略接口和具体实现策略类支付策略接口微信支付策略类支付宝支付策略类准备支付策略上下文Context和支付策略工厂类支付策略工厂类支付策略枚举类支付策略上下...
    99+
    2024-04-02
  • java策略模式如何实现
    本篇内容介绍了“java策略模式如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 刘备要到江东娶老婆了,走之前诸葛亮给赵云(...
    99+
    2023-06-19
  • Java中如何实现策略模式
    这篇文章给大家分享的是有关Java中如何实现策略模式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这里设计了一个有关足球的场景,在进攻当中暂分为传球和射门两个动作。最开始你可能会这样想,设计一个抽象类(Attac...
    99+
    2023-06-17
  • Spring创建bean的几种方式及使用场景
    目录1、@Configuration注解2、@Bean注解3、@Import注解3.1、导入标记有@Configuration的配置类3.2、导入ImportSelector的实现类...
    99+
    2023-05-18
    Spring创建bean Spring bean
  • Java设计模式中的策略模式如何实现
    这篇文章主要介绍了Java设计模式中的策略模式如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java设计模式中的策略模式如何实现文章都会有所收获,下面我们一起来看看吧。1 概述在平时开发中,往往会遇到这...
    99+
    2023-06-30
  • Vue实现组件间通信的几种方式(多种场景)
    目录1、Props 父 >>> 子  (Props)子 >>> 父 ($emit)2、Bus事件总线3、V...
    99+
    2024-04-02
  • Spring boot 运用策略模式实现避免多次使用if的操作代码
    目录前言环境配置实现目标准备策略接口和具体实现策略类支付策略接口微信支付策略类支付宝支付策略类准备支付策略上下文Context和支付策略工厂类支付策略工厂类支付策略枚举类支付策略上下...
    99+
    2024-04-02
  • 基于Spring(Boot)下策略模式的使用方法教程
    这篇文章主要讲解了“基于Spring(Boot)下策略模式的使用方法教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于Spring(Boot)下策略模式...
    99+
    2024-04-02
  • JavaWeb如何使用mvc模式实现登录功能
    这篇文章给大家分享的是有关JavaWeb如何使用mvc模式实现登录功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。部署项目、环境搭建 详细内容  1.导包  &...
    99+
    2023-06-29
  • Python 中用多种方式实现单例模式
    目录使用模块使用装饰器使用类基于 __new__ 方法实现基于 metaclass 方式实现单例模式(Singleton Pattern) 是一种常用的...
    99+
    2022-11-16
    Python实现单例模式 Python单例模式
  • 如何使用JavaScript策略模式校验表单
    目录概述未使用策略模式的表单校验使用策略模式优化策略模式的优点总结概述 Web项目中,登录,注册等等功能都需要表单提交,当把用户的数据提交给后台之前,前端一般要做一些力所能及的校验,...
    99+
    2024-04-02
  • SpringBoot实现人脸识别等多种登录方式
    目录1.前端界面实现2.手机验证码登录3.人脸识别登录(百度人脸识别)1.前端界面实现 ①背景闪烁效果: <!-- 背景星星闪烁效果 --> <script&g...
    99+
    2024-04-02
  • SpringSecurity实现多种登录方式(常规方式外的邮件、手机验证码登录)
    目录前言:一、‍♂️理论知识二、EmailCodeAuthenticationFilter三、EmailCodeAuthenticationToken四、EmailCodeA...
    99+
    2024-04-02
  • 详解Java如何优雅的使用策略模式
    目录什么是策略模式策略模式结构策略模式适用场景简单示例项目实战场景用一坨坨代码实现策略模式重构代码代码实现总结最近这段时间,想给大家分享一下设计模式的一些用法以及在项目中怎么运用。 ...
    99+
    2023-02-27
    Java优雅使用策略模式 Java使用策略模式 Java策略模式
  • 策略模式如何实现Vue动态表单验证
    这篇文章将为大家详细讲解有关策略模式如何实现Vue动态表单验证,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。策略模式(Strategy Pattern)又称政策模式,其定...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作