복붙노트

[SPRING] 봄 부팅 @RepositoryEventHandler가 호출되지 않았습니다.

SPRING

봄 부팅 @RepositoryEventHandler가 호출되지 않았습니다.

@RepositoryEventHandler가 설정되어 있는데 알 수없는 이유로 호출되지 않습니다.

@Component
@RepositoryEventHandler(User.class)
public class UserEventHandler {

    @Autowired
    private PasswordCrypto passwordCrypto;

    @HandleBeforeSave
    public void handleUserSave(User user) {
        if (user.getPassword() != null && !"".equals(user.getPassword())) {
            user.setPassword(passwordCrypto.encrypt(user.getPassword()));
        }
    }

    @HandleBeforeCreate
    public void handleUserCreate(User user) {
        user.setPassword(passwordCrypto.encrypt(user.getPassword()));
    }
}

저장소 :

public interface UserRepository extends CrudRepository<User, Long> {
    Optional<User> findOneByUsername(String username);
}

그리고 내 주요 수업 :

@SpringBootApplication
@EntityScan("de.ihrig.feuerwehr.hydranet.model")
@EnableJpaRepositories
@ComponentScan({
    "somepath",
    "somepath including the UserEventHandler"
})
public class ServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class, args);
    }
}

도움을 주셔서 감사합니다. 오류를 찾을 수 없습니다.

해결법

  1. ==============================

    1.계속되는 몇 가지 일이있을 수 있습니다.

    계속되는 몇 가지 일이있을 수 있습니다.

    Repo에 @RestResource가 주석으로 표시되어 있지는 않지만 단지 감시 일뿐입니다.

    주석이 정확하다고 생각하고 REST API를 통과하지 않는 진입 점을 사용하여 단위 테스트를 통해 테스트하고 있습니다. 핸들러는 해당 벡터를 통해 들어오는 Repo 이벤트 만 캡처합니다.

    진입 점에 관계없이 모든 Repo 이벤트를 캡처하려면 AbstractRepositoryEventListener를 사용하려고합니다.

    Spring Data Rest Events 문서는 이것을 다룹니다. 또한 봄 부팅시 리포지토리 이벤트 수신을 참조하십시오.

  2. from https://stackoverflow.com/questions/32796049/spring-boot-repositoryeventhandler-not-invoked by cc-by-sa and MIT license