diff --git a/pom.xml b/pom.xml index af8cb73..fa69c06 100644 --- a/pom.xml +++ b/pom.xml @@ -38,6 +38,11 @@ org.springframework.boot spring-boot-starter + + org.springframework.boot + spring-boot-configuration-processor + true + org.jetbrains.kotlin kotlin-reflect @@ -66,6 +71,9 @@ org.springframework.boot spring-boot-maven-plugin + + true + org.jetbrains.kotlin diff --git a/src/main/kotlin/fr/lucasdupont/configuration/JdaAutoConfiguration.kt b/src/main/kotlin/fr/lucasdupont/configuration/JdaAutoConfiguration.kt new file mode 100644 index 0000000..7d8ac46 --- /dev/null +++ b/src/main/kotlin/fr/lucasdupont/configuration/JdaAutoConfiguration.kt @@ -0,0 +1,30 @@ +package fr.lucasdupont.configuration + +import fr.lucasdupont.service.JdaService +import org.springframework.boot.autoconfigure.AutoConfiguration +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty +import org.springframework.boot.context.properties.EnableConfigurationProperties +import org.springframework.context.ApplicationContext +import org.springframework.context.ApplicationEventPublisher +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.ComponentScan + +@AutoConfiguration +@EnableConfigurationProperties(JdaConfiguration::class) +@ConditionalOnProperty(prefix = "jda", name = ["token"]) +@ComponentScan(basePackages = ["fr.lucasdupont"]) +class JdaAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + fun jdaService( + applicationContext: ApplicationContext, + jdaConfiguration: JdaConfiguration, + publisher: ApplicationEventPublisher + ): JdaService { + return JdaService(applicationContext, jdaConfiguration, publisher) + } + +} + diff --git a/src/main/kotlin/fr/lucasdupont/service/JdaService.kt b/src/main/kotlin/fr/lucasdupont/service/JdaService.kt index 51bc84b..696a285 100644 --- a/src/main/kotlin/fr/lucasdupont/service/JdaService.kt +++ b/src/main/kotlin/fr/lucasdupont/service/JdaService.kt @@ -11,15 +11,11 @@ import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEve import net.dv8tion.jda.api.hooks.ListenerAdapter import net.dv8tion.jda.api.requests.GatewayIntent import net.dv8tion.jda.api.utils.cache.CacheFlag -import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.ApplicationContext import org.springframework.context.ApplicationEventPublisher import org.springframework.context.PayloadApplicationEvent import org.springframework.context.event.EventListener -import org.springframework.stereotype.Service -@Service -@EnableConfigurationProperties(JdaConfiguration::class) class JdaService( applicationContext: ApplicationContext, jdaConfiguration: JdaConfiguration, diff --git a/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..609cfca --- /dev/null +++ b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +fr.lucasdupont.configuration.JdaAutoConfiguration +