欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

登錄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();
}

具體實(shí)現(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;
    }
}

具體實(shí)現(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;
    }
}

具體實(shí)現(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;
    }
}

簡(jiǎn)單模擬登錄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);
}

到此這篇關(guān)于spring使用策略模式實(shí)現(xiàn)多種場(chǎng)景登錄方式的文章就介紹到這了,更多相關(guān)spring 策略模式登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于jfreechart生成曲線、柱狀等圖片并展示到JSP

    基于jfreechart生成曲線、柱狀等圖片并展示到JSP

    這篇文章主要介紹了基于jfreechart生成曲線、柱狀等圖片并展示到JSP,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 深入分析java并發(fā)編程中volatile的實(shí)現(xiàn)原理

    深入分析java并發(fā)編程中volatile的實(shí)現(xiàn)原理

    這篇文章主要介紹了深入分析java并發(fā)編程中Volatile的實(shí)現(xiàn)原理,涉及Volatile的官方定義,實(shí)現(xiàn)原理,使用優(yōu)化等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • java讀取txt文件內(nèi)容簡(jiǎn)單舉例

    java讀取txt文件內(nèi)容簡(jiǎn)單舉例

    這篇文章主要給大家介紹了關(guān)于java讀取txt文件內(nèi)容簡(jiǎn)單舉例的相關(guān)資料,通常我們可以直接通過文件流來讀取txt文件的內(nèi)容,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-07-07
  • Java?ConcurrentHashMap的源碼分析詳解

    Java?ConcurrentHashMap的源碼分析詳解

    ConcurrentHashMap(CHM)是日常開發(fā)中使用頻率非常高的一種數(shù)據(jù)結(jié)構(gòu),想對(duì)于普通的HashMap,CHM提供了線程安全的讀寫,CHM里面使用了許多比較精妙的優(yōu)化&操作。本文主要對(duì)CHM的整體結(jié)構(gòu)、初始化,查找,插入等做分析
    2023-03-03
  • SharedingSphere?自定義脫敏規(guī)則介紹

    SharedingSphere?自定義脫敏規(guī)則介紹

    這篇文章主要介紹了SharedingSphere?自定義脫敏規(guī)則,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot整合MongoDB的步驟詳解

    SpringBoot整合MongoDB的步驟詳解

    這篇文章主要介紹了SpringBoot整合MongoDB的步驟詳解,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下
    2021-04-04
  • 從零開始搭建springboot+springcloud+mybatis本地項(xiàng)目全過程(圖解)

    從零開始搭建springboot+springcloud+mybatis本地項(xiàng)目全過程(圖解)

    這篇文章主要介紹了從零開始搭建springboot+springcloud+mybatis本地項(xiàng)目全過程(圖解),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • java單例模式實(shí)現(xiàn)面板切換

    java單例模式實(shí)現(xiàn)面板切換

    這篇文章主要為大家詳細(xì)介紹了java單例模式實(shí)現(xiàn)面板切換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java驗(yàn)證日期時(shí)間字符串是否合法的三種方式

    Java驗(yàn)證日期時(shí)間字符串是否合法的三種方式

    判斷日期經(jīng)常合法出現(xiàn)在IO場(chǎng)景下,下面將盡量使用簡(jiǎn)練的思路和代碼呈現(xiàn)給大伙,這篇文章主要給大家介紹了關(guān)于Java驗(yàn)證日期時(shí)間字符串是否合法的三種方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • java隨機(jī)數(shù)生產(chǎn)算法實(shí)例

    java隨機(jī)數(shù)生產(chǎn)算法實(shí)例

    下面小編就為大家?guī)硪黄猨ava隨機(jī)數(shù)生產(chǎn)算法實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10

最新評(píng)論