最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談spring使用策略模式實現(xiàn)多種場景登錄方式

 更新時間:2021年12月16日 16:20:39   作者:九曜  
本文主要介紹了spring使用策略模式實現(xiàn)多種場景登錄方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

?@Autowired注解可以幫我們自動注入我們想要的 Bean。
如果只是簡單使用@Autowired會遇到spring IOC容器中一個接口有多個實現(xiàn)的情況,spring無法識別具體的實現(xiàn)類,如果不是策略模式,我們可以進行具體的指定@Qualifier和@primary來避免bean沖突的情況。但在策略模式中是不行的。
而除了這個基本功能之外, @Autowired 還有更加強大的功能,還可以注入指定類型的數(shù)組,List/Set 集合,甚至還可以是 Map 對象。
為每個具體的實現(xiàn)類添加了一個編號,方便識別,具體可以根據(jù)場景選擇,這里只是模擬。

登錄service

@Service
public 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);
        }

    }
}

源碼策略接口

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

具體實現(xiàn)類---用戶密碼登錄

@Component
public 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;
    }
}

具體實現(xiàn)類---郵箱登錄

@Component
public 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;
    }
}

具體實現(xiàn)類---郵箱登錄

@Component
public 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
@Repository
public 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使用策略模式實現(xiàn)多種場景登錄方式的文章就介紹到這了,更多相關spring 策略模式登錄內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • nodejs連接dubbo服務的java工程實現(xiàn)示例

    nodejs連接dubbo服務的java工程實現(xiàn)示例

    這篇文章主要介紹了在項目遷移中,nodejs連接dubbo服務的java工程實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • SpringBoot集成Activiti7工作流引擎的示例代碼

    SpringBoot集成Activiti7工作流引擎的示例代碼

    本文主要介紹了SpringBoot集成Activiti7工作流引擎的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-11-11
  • SpringBoot整合Swagger3生成接口文檔過程解析

    SpringBoot整合Swagger3生成接口文檔過程解析

    這篇文章主要介紹了SpringBoot整合Swagger3生成接口文檔過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • mybatisPlus使用LocalDateTime轉化異常的實現(xiàn)

    mybatisPlus使用LocalDateTime轉化異常的實現(xiàn)

    本文主要介紹了mybatisPlus使用LocalDateTime轉化異常的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • JFinal使用ajaxfileupload實現(xiàn)圖片上傳及預覽

    JFinal使用ajaxfileupload實現(xiàn)圖片上傳及預覽

    這篇文章主要為大家詳細介紹了JFinal使用ajaxfileupload實現(xiàn)圖片上傳及預覽,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Mybatis源碼分析之插件模塊

    Mybatis源碼分析之插件模塊

    今天給大家?guī)淼氖顷P于Mybatis的相關知識,文章圍繞著Mybatis插件模塊展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • SpringBoot?緩存預熱的實現(xiàn)

    SpringBoot?緩存預熱的實現(xiàn)

    本文主要介紹了SpringBoot?緩存預熱的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2007-11-11
  • java簡單實現(xiàn)復制 粘貼 剪切功能代碼分享

    java簡單實現(xiàn)復制 粘貼 剪切功能代碼分享

    本文給大家分享了一段java編寫的簡單實現(xiàn)復制粘貼剪切功能的代碼,需要的小伙伴可以直接拿走使用。如有更好的方案,也可以告之本人。
    2014-11-11
  • 深入理解java中的synchronized關鍵字

    深入理解java中的synchronized關鍵字

    這篇文章主要介紹了java中的synchronized關鍵字,有需要的朋友可以參考一下
    2013-12-12
  • MyEclipse2018中安裝Mybatis generator插件的實現(xiàn)步驟

    MyEclipse2018中安裝Mybatis generator插件的實現(xiàn)步驟

    這篇文章主要介紹了MyEclipse2018中安裝Mybatis generator插件的實現(xiàn)步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02

最新評論

安岳县| 海盐县| 双流县| 嘉善县| 怀宁县| 郑州市| 阜南县| 民勤县| 台北县| 南投市| 漳平市| 临西县| 板桥市| 闽侯县| 白山市| 南召县| 石嘴山市| 聂拉木县| 井冈山市| 孟村| 怀化市| 瓮安县| 茌平县| 辰溪县| 汉寿县| 洛川县| 平谷区| 那曲县| 奎屯市| 阳高县| 罗城| 桃源县| 绥宁县| 五大连池市| 蓝山县| 兴国县| 土默特左旗| 昌邑市| 宝山区| 蒙自县| 安丘市|