2016-07-15 3 views
0

У меня проблема с подключением к cassandra, когда keypace не существует. Я не хочу жестко кодировать свое пространство в приложении. Я хочу написать имя ключа в application.yml (я использую весеннюю загрузку). Я хочу, чтобы создать сеанс связи с ассоциацией с ключевым пространством:Cassandra подключается к кластеру, если ключевое пространство не существует

session = cluster.connect("keyspace"); 

Я должен сделать это, потому что я не могу Autowired свойства в интерфейсе @Accessor.

@Accessor 
public interface PropertyAccessor { 

    //cannot autowire this field 
    @Value("${database.keyspace}") 
    String keyspace = ""; 

Так что мой вопрос:

  1. Как подключиться к Кассандре кластеру и получить сеанс объект ассоциацию с ключевым пространством, когда пространство ключи не существует?

  2. Как автоувеличивать свойство из свойств весны в интерфейсе @Accessor?

PS. Я использую casandra 3.7, поэтому я не могу использовать spring-data-cassandra.

ответ

0

Если вы создали, например, ваш CustomAccessorRepository аннотацию @Accessor

@Accessor 
public interface CustomAccessorRepository { 
    @Query("select from custom where id=':id') 
    CustomObject findById(@Param("id") String id); 
} 

Вы можете просто создать некоторый класс и аннотировать его с @Configuration, в этом классе создать @Bean, который возвращает свой аксессор

@Configuration 
public class CassandraConfig { 

    private Cluster cluster; 

    private Session session; 

    private MappingManager mappingManager; 

    @Value("${database.keyspace}") 
    private String keyspace; 

    public CassandraConfig(){ 
     cluster = Cluster.builder() 
      .addContactPoints(nodes.split(",")) 
      .withPort(port) 
      .build(); 
     session = cluster.connect(keyspace) 
     mappingManager = new MappingManager(session); 
    } 

    @Bean 
    public CustomAccessorRepository customAccessorRepository(){ 
     return mappingManager.createAccessor(CustomAccessorRepository.class); 
    } 
} 

После этого вы можете придать свой Accessor в какой-то службы

@Autowired 
private CustomAccessorRepository customAccessorRepository; 
+0

statement_You не может создать сеанс без keypace._ неправильно. –

+0

Спасибо, да, я был неправ, на самом деле есть возможность создать сеанс без ключа, но я думаю, что это плохой подход. –

+0

Почему вы так думаете? –

Смежные вопросы