spring-cassandra-accessor基于DataStax Java Driver 3.7 进行封装的。
DataStax Java Driver 使用accessor时候方式如下:
@Accessor
public interface UserAccessor {
@Query("SELECT * FROM user")
Result<User> getAll();
}
UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);
Result<User> users = userAccessor.getAll();
但是每次使用时候,都这样会很麻烦,因为很多重复代码,而且不方便管理,于是想着使用时候如下:
@Accessor
public interface UserAccessor {
@Query("SELECT * FROM user")
Result<User> getAll();
}
@Autowired
private UserAccessor userAccessor;
那么就需要使用Spring能力将带有@Accessor注解的接口扫描进Bean容器中,并且需要带有自动配置功能,所以设计了如下方案(参考mybatis-spring):

- 第一步:AccessorFactoryBean(手动配置)
- 第二步:AccessorScannerConfigurer(手动配置)
- 第三步:AccessorScannerRegistrar(注解配置)
- @AccessorScan 注解:用来标记扫描哪些包下面的@Accessor。
- AccessorScanner:扫描带有Accessor注解的接口。
- AccessorScannerConfigurer:配置AccessorScanner的属性,配置完开始扫描。
- AccessorScannerRegistrar:扫描@AccessorScan,扫描完注册到Bean容器中。
- AccessorFactoryBean:用来管理session和mappingManager。
- CqlSessionFactoryBean:创建CqlSession工厂Bean。