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.SpringBootApplication;
9 import org.springframework.boot.autoconfigure.data.mongo.MongoReactiveDataAutoConfiguration;
10 import org.springframework.boot.autoconfigure.data.mongo.MongoReactiveRepositoriesAutoConfiguration;
11 import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
12 import org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration;
13 import org.springframework.web.reactive.config.CorsRegistry;
14 import org.springframework.web.reactive.config.WebFluxConfigurer;
15
16
17 @SpringBootApplication(exclude = {
18                 MongoReactiveDataAutoConfiguration.class,
19                 MongoReactiveAutoConfiguration.class,
20                 MongoReactiveRepositoriesAutoConfiguration.class,
21                 MongoAutoConfiguration.class })
22 public class ChatBackendApplication implements WebFluxConfigurer
23 {
24         @Autowired
25         ChatBackendProperties properties;
26         @Autowired
27         ChatHomeService chatHomeService;
28         @Autowired
29         StorageStrategy storageStrategy;
30
31
32         @Override
33         public void addCorsMappings(CorsRegistry registry)
34         {
35                 registry
36                                 .addMapping("/**")
37                                 .allowedOrigins(properties.getAllowedOrigins());
38         }
39
40         @PreDestroy
41         public void onExit()
42         {
43                 storageStrategy
44                                 .write(chatHomeService)
45                                 .subscribe();
46         }
47
48         public static void main(String[] args)
49         {
50                 SpringApplication.run(ChatBackendApplication.class, args);
51         }
52 }