spring使用策略模式,实现多种场景登录方式
@Autowired注解可以帮我们自动注入我们想要的 Bean。
如果只是简单使用@Autowired会遇到spring IOC容器中一个接口有多个实现的情况,spring无法识别具体的实现类,如果不是策略模式,我们可以进行具体的指定@Qualifier和@primary来避免bean冲突的情况。但在策略模式中是不行的。
而除了这个基本功能之外, @Autowired 还有更加强大的功能,还可以注入指定类型的数组,List/Set 集合,甚至还可以是 Map 对象。
为每个具体的实现类添加了一个编号,方便识别,具体可以根据场景选择,这里只是模拟。
登录service
1 | typescript复制代码@Service |
源码策略接口
1 | scss复制代码@Component |
具体实现类—用户密码登录
1 | typescript复制代码@Component |
具体实现类—邮箱登录
1 | typescript复制代码 |
具体实现类—邮箱登录
1 | typescript复制代码@Component |
简单模拟登录SQL
1 | Java复制代码@Mapper |
本文转载自: 掘金