TMP
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / ChatBackendApplication.java
1 package de.juplo.kafka.chat.backend;
2
3 import de.juplo.kafka.chat.backend.domain.ChatHomeService;
4 import de.juplo.kafka.chat.backend.implementation.StorageStrategy;
5 import jakarta.annotation.PreDestroy;
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.boot.SpringApplication;
8 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
9 import org.springframework.boot.autoconfigure.SpringBootApplication;
10 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
11 import org.springframework.boot.autoconfigure.data.mongo.MongoReactiveDataAutoConfiguration;
12 import org.springframework.boot.autoconfigure.data.mongo.MongoReactiveRepositoriesAutoConfiguration;
13 import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
14 import org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration;
15 import org.springframework.context.annotation.Configuration;
16 import org.springframework.web.reactive.config.CorsRegistry;
17 import org.springframework.web.reactive.config.WebFluxConfigurer;
18
19
20 @SpringBootApplication
21 public class ChatBackendApplication implements WebFluxConfigurer
22 {
23         @Autowired
24         ChatBackendProperties properties;
25         @Autowired
26         ChatHomeService chatHomeService;
27         @Autowired
28         StorageStrategy storageStrategy;
29
30
31         @Override
32         public void addCorsMappings(CorsRegistry registry)
33         {
34                 registry
35                                 .addMapping("/**")
36                                 .allowedOrigins(properties.getAllowedOrigins());
37         }
38
39         @PreDestroy
40         public void onExit()
41         {
42                 storageStrategy
43                                 .write(chatHomeService)
44                                 .subscribe();
45         }
46
47         @ConditionalOnExpression("!'${chat.backend.inmemory.storage-strategy}'.toLowerCase().equals('mongodb')")
48         @Configuration
49         @EnableAutoConfiguration(exclude = {
50                         MongoReactiveDataAutoConfiguration.class,
51                         MongoReactiveAutoConfiguration.class,
52                         MongoReactiveRepositoriesAutoConfiguration.class,
53                         MongoAutoConfiguration.class })
54         public static class DisableMongoDBConfiguration
55         {
56         }
57
58         public static void main(String[] args)
59         {
60                 SpringApplication.run(ChatBackendApplication.class, args);
61         }
62 }