Автоматически добавлять JaversSpringDataAuditable во все экземпляры JPARepository в Spring Boot

@Repository
@JaversSpringDataAuditable
public interface UserRepository extends JpaRepository<User, Integer> {

Это работает нормально, но у меня много репозиториев, которые мне нужно аннотировать. Есть ли способ настроить Spring Boot так, чтобы все экземпляры @Repository автоматически использовали @JaversSpringDataAuditable?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
0
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

я не знаю насчет @JaversSpringDataAuditable, но вы можете решить свою проблему, воспользовавшись преимуществами работы Spring Boot и аннотациями.

  • Решение. Создайте и используйте пользовательскую аннотацию с @Repository и @JaversSpringDataAuditable.

Вот мой пример кода:

  • Во-первых, если вы заглянете внутрь аннотации @Repository, то увидите следующее.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Repository {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";
}
  • Создайте пользовательскую аннотацию, аналогичную аннотации, но имеющую другое имя.
  • Теперь добавьте нужный нам @JaversSpringDataAuditable.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
@JaversSpringDataAuditable //<- Add
public @interface CustomRepository {
    @AliasFor(
            annotation = Component.class
    )
    String value() default "";
}
  • Наконец, используйте его следующим образом
@CustomRepository
public interface UserRepository extends JpaRepository<User, Integer> {}

Также вы можете сделать название аннотации более красивым (подходящим по своему функционалу).

Я надеюсь, что это поможет. Спасибо

Спасибо! Конечно, это намного аккуратнее и хороший способ включить дополнительную функциональность. Я надеялся, что все аннотации @Repository смогут наследовать дополнительную аннотацию, но если это решение невозможно, я приму этот ответ.

Chris A 15.03.2024 09:18

Другие вопросы по теме