Najprostszym rozwiązaniem byłoby dodać zależność Spring Boot Starter Data Cassandra do Wiosna Boot aplikacji, tak jak ...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
Oprócz tego doda Cassandrę Wiosna danychdependency do Twoje zgłoszenie.
Z wiosennym danych Cassandra można skonfigurować KEYSPACE (a) aplikacji używając CassandraClusterFactoryBean
(lub bardziej precyzyjnie, podklasa ... CassandraCqlClusterFactoryBean
) przez wywołanie metody setKeyspaceCreations(:Set).
Klasa KeyspaceActionSpecification jest dość zrozumiała. Można nawet utworzyć go przy pomocy KeyspaceActionSpecificationFactoryBean, dodać go do Set
, a następnie przekazać do metody setKeyspaceCreations(..)
na urządzeniu CassandraClusterFactoryBean
.
Aby wygenerować tabele aplikacji, wystarczy po prostu zanotować obiekt (y) domeny aplikacji (encje) za pomocą adnotacji SD Cassandra @Table i upewnić się, że obiekty/obiekty domeny można znaleźć na ścieżce CLASSPATH aplikacji.
W szczególności, można rozszerzyć klasę Cassandra o @Configuration
klasy SD Cassandra AbstractClusterConfiguration. Znajdziesz tam metodę getEntityBasePackages():String[], którą możesz przesłonić, aby udostępnić lokalizacje pakietów zawierające klasy obiektu/podmiotu domeny aplikacji, które SD Cassandra będzie następnie używać do scan dla obiektu/podmiotów domeny domeny @Table
.
z aplikacją @Table
obiektu domeny/podmioty prawidłowo zidentyfikowane, można ustawić SD Cassandra SchemaAction do CREATE
stosując metodę CassandraSessionFactoryBean
, setSchemaAction(:SchemaAction). Spowoduje to utworzenie tabel w obszarze Keyspace dla wszystkich obiektów/obiektów domeny znalezionych podczas skanowania, pod warunkiem, że odpowiednio ustawisz odpowiednią przestrzeń kluczy na swoim komputerze .
Oczywiście, jeśli twoja aplikacja tworzy/używa wielu Obszarów Kluczowych, będziesz musiał utworzyć oddzielną CassandraSessionFactoryBean
dla każdego Pola, z właściwością konfiguracyjną entityBasePackages
ustawioną odpowiednio dla encji należących do określonego Obszaru Klucza, tak, aby powiązane Tabele były utworzone w tym Keyspace.
teraz ...
Przez „dodatkowe” Stoły na użytkownika, który jest trochę bardziej skomplikowane i trudne.
Możesz być w stanie wykorzystać profile wiosny tutaj, jednak profile są zazwyczaj stosowane tylko podczas uruchamiania. Jeśli inny użytkownik loguje się do już działającej aplikacji, potrzebny jest sposób dostarczenia dodatkowych klas @Configuration
do wersji Spring ApplicationContext
w środowisku wykonawczym.
Twój Wiosna Boot aplikacja mogła wprowadzić odniesienie do AnnotationConfigApplicationContext
, a następnie użyć go w przypadku logowania programowo register dodatkowych @Configuration
zajęcia oparte na użytkownika, który zalogował się do aplikacji. Musisz wykonać połączenie register(Class...)
z ApplicationContext.refresh()
.
Musisz również odpowiednio zająć się sytuacją, w której tabele już istnieją.
To nie jest obecnie obsługiwane w SD Cassandra, ale dalsze szczegóły można znaleźć pod numerem DATACASS-219.
Z technicznego punktu widzenia znacznie prostsze byłoby stworzenie wszystkich możliwych tabel wymaganych przez aplikację dla wszystkich użytkowników w czasie wykonywania i stosowanie ustawień zabezpieczeń Cassandra w celu ograniczenia dostępu do poszczególnych użytkowników według roli i przypisanych uprawnień.
Inną opcją może być po prostu utworzenie tymczasowych Obszarów kluczowych i/lub tabel w razie potrzeby, gdy użytkownik zaloguje się do aplikacji, upuść je, gdy użytkownik się wyloguje.
Oczywiście, istnieje wiele różnych opcji, a to sprowadza się bardziej do decyzji architektonicznych, kompromisów i względów, to robi techniczną wykonalność, więc należy zachować ostrożność.
Mam nadzieję, że to pomoże.
Pozdrawiam!
Śledzę ten kod, ale nadal nie jestem w stanie utwórz Keyspace i tabele w bootowaniu aplikacji. Czy jest jeszcze coś, czego mi brakuje? Proszę, prowadź mnie. – Milesh