2016-07-31 47 views
0

在我服務層我有方法至極更新電子郵件:封裝的密碼編碼器服務層的

@Override 
public void updateUserEmail(String email, String newEmail, String password) throws InvalidPasswordException, DuplicateEmailException { 

    Client client = getSpecializedUserByEmail(email); 
     /*....*/ 
} 

密碼 - 由用戶輸入,但是檢查它是否符合現實,我必須用BCryptPasswordEncoder在我的服務層 - 但它是違反服務層的封裝。 我可以使用控制器中的密碼檢查 - 但這是不好的做法。 請幫忙,我將不勝感激)

回答

1

我不知道你爲什麼認爲在服務中使用BCryptPasswordEncoder會破壞封裝。但是,如果你的意思是你真的想將你的服務層與第三方庫隔離開來,你可以創建一個接口來編碼密碼,然後用自己的包裝了BCryptPasswordEncoder的類來實現它,然後注入將該實現集成到您的服務對象中,服務對象僅查看和導入該接口。

這樣,您的服務對象就非常鬆散地耦合到編碼器,並且可以更改編碼器的內部實現而不影響服務對象。

+0

非常感謝:) – Yuriy