spring使用策略模式如何实现多种场景登录方式
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家介绍spring使用策略模式如何实现多种场景登录方式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。@Autowired注解可以帮我们自动注入我们想要的 Bean。如
千家信息网最后更新 2026年11月01日spring使用策略模式如何实现多种场景登录方式登录service
源码策略接口
这篇文章给大家介绍spring使用策略模式如何实现多种场景登录方式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
@Autowired注解可以帮我们自动注入我们想要的 Bean。
如果只是简单使用@Autowired会遇到spring IOC容器中一个接口有多个实现的情况,spring无法识别具体的实现类,如果不是策略模式,我们可以进行具体的指定@Qualifier和@primary来避免bean冲突的情况。但在策略模式中是不行的。
而除了这个基本功能之外, @Autowired 还有更加强大的功能,还可以注入指定类型的数组,List/Set 集合,甚至还可以是 Map 对象。
为每个具体的实现类添加了一个编号,方便识别,具体可以根据场景选择,这里只是模拟。
登录service
@Servicepublic class LoginService { @Autowired Set loginSet;//使用了Set Map 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使用策略模式如何实现多种场景登录方式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
登录
策略
模式
场景
多种
方式
内容
功能
只是
情况
接口
更多
邮箱
帮助
不行
不错
强大
兴趣
多个
容器
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
新华互联网科技
互联网科技产业
科技互联网公司装修
互联网的科技创新
互联网金融科技创新
远拓互联网科技
致聘互联网科技
沃里互联网科技
天下捷融互联网科技
齐家互联网科技有限公司
互联网科技的未来发展
温州喔噻互联网科技有限公司
华服互联网科技官网
厦门比较好的科技互联网公司
互联网金融科技名词解释
艺电能源互联网科技有限公司招聘
银川新华互联网科技学校原画
绵阳真晨互联网科技有限公司
互联网高科技绘画
广州万易互联网科技有限公司
A股互联网金融科技公司
互联网科技股票
远信互联网科技
上海卓越科技 互联网
搜狐科技互联网
深圳艾果互联网通讯科技
北京天晋互联网科技有限公司
平安好医生打造互联网科技医疗
互联网 科技节活动 微视频大赛