0

Repository.save メソッドへの呼び出しを傍受しようとしています。これは基本的にここここで説明されています。唯一の問題は、単に機能しないことです。私は明らかに何かが欠けていますが、何時間も経った後、私は何を失っています。

Spring 4.1.6 と AspectJ 1.8.5 を使用しています。

コード:

私の構成クラスからの興味深い注釈:

@Configuration
@EnableWebMvc
@EnableAspectJAutoProxy
@EnableJpaRepositories(
   basePackageClasses=com.xxx.admin.repository.ComponentScan.class)
@ComponentScan(basePackageClasses=      
   {com.xxx.admin.domain.ComponentScan.class
    ,com.xxx.admin.model.ComponentScan.class
    ,com.xxx.admin.service.ComponentScan.class})
@EnableTransactionManagement
@EnableLoadTimeWeaving(aspectjWeaving = EnableLoadTimeWeaving.AspectJWeaving.ENABLED )`

ターゲット リポジトリ:

@Repository
public interface UserRepository extends PagingAndSortingRepository<User, UserId> {

@Transactional(readOnly=true)
Page<User> findAll(Pageable pageable);

@SuppressWarnings("unchecked")
@Transactional
public User save(User user);
}

アスペクト:

@Aspect
public class RepositorySaveAspect {

// Define the JoinPonit
//"org.springframework.data.repository.Repository+.*(..))")
//com.xxx.admin.repository.

//@Pointcut("execution(* com.xxxx.admin.repository.UserRepository.save(..))")
//@Pointcut("execution(* com.xxxx.admin.repository.*Repository+.*(..))")
//@Pointcut("execution(* org.springframework.data.repository.PagingAndSortingRepository+.*(..))")
@Pointcut("execution(public !void org.springframework.data.repository.CrudRepository+.*(..))")
public void repositorySavePoints() {
}

ご覧のとおり、いくつかの異なるタイプの Pointcut を試しました。しかし、どれも機能しません。プロキシに関係する何かを見逃したのではないかと思います。アドバイス(しゃれを意図したもの)をいただければ幸いです。

4

0 に答える 0