Пользовательская аннотация в поле модели для шифрования и дешифрования при сохранении в БД при весенней загрузке

У меня есть загрузочное приложение Spring, и я новичок с пользовательской аннотацией. Я хочу ввести пользовательскую аннотацию, аналогичную аннотации @EncryptedField для java sdk на диване. Если я применяю эту аннотацию к полю в классе модели, то это поле должно быть зашифровано при сохранении в БД и расшифровано при извлечении обратно. Я не понимаю, какой подход выбрать? Должен ли я использовать Spring AOP для этого? Любые входные данные для реализации этого будут действительно полезны


person vijayashankard    schedule 29.04.2020    source источник
comment
Как вы получаете доступ к бд? Спящий режим? JDBC?   -  person Stav Shamir    schedule 29.04.2020
comment
Я использую spring-data-couchbase   -  person vijayashankard    schedule 30.04.2020


Ответы (1)


Это зависит от того, какую структуру постоянства вы используете.

Для Mybatis вы можете добавить интерцептор

как это

<plugins>       
    <plugin interceptor="com.XXX.XXXX.service.encryptinfo.MyInterceptor" />
</plugins>

Затем реализуйте это

    @Intercepts({
    @Signature(type=Executor.class,method="update",args={MappedStatement.class,Object.class}),
    @Signature(type=Executor.class,method="query",args={MappedStatement.class,Object.class,RowBounds.class,ResultHandler.class})
})
public class MyInterceptor implements Interceptor{

    // your logic here
    // write something that use reflection capture your custom annotaion of the entity and field
}
person AwesomeHunter    schedule 29.04.2020