From 0ceef5e5758c2312322ab2dff91b8212ed631054 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Tue, 18 May 2021 17:23:33 +0300 Subject: [PATCH] use Spring Context --- build.gradle | 2 ++ .../ru/dmitriymx/plugin/BanHammerPlugin.java | 20 +++++++++++++++++-- .../ru/dmitriymx/plugin/SpringConfig.java | 10 ++++++++++ .../dmitriymx/plugin/command/BanCommand.java | 8 +++++++- .../plugin/command/UnbanCommand.java | 8 +++++++- 5 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 src/main/java/ru/dmitriymx/plugin/SpringConfig.java diff --git a/build.gradle b/build.gradle index fc8177f..3467439 100644 --- a/build.gradle +++ b/build.gradle @@ -31,6 +31,8 @@ dependencies { exclude group: 'commons-lang', module: 'commons-lang' exclude group: 'com.google.guava', module: 'guava' } + + implementation 'org.springframework:spring-context:5.2.5.RELEASE' } processResources { diff --git a/src/main/java/ru/dmitriymx/plugin/BanHammerPlugin.java b/src/main/java/ru/dmitriymx/plugin/BanHammerPlugin.java index bb64b01..bf18423 100644 --- a/src/main/java/ru/dmitriymx/plugin/BanHammerPlugin.java +++ b/src/main/java/ru/dmitriymx/plugin/BanHammerPlugin.java @@ -1,15 +1,31 @@ package ru.dmitriymx.plugin; import org.bukkit.plugin.java.JavaPlugin; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; import ru.dmitriymx.plugin.command.BanCommand; import ru.dmitriymx.plugin.command.UnbanCommand; +import java.util.logging.Logger; + @SuppressWarnings("unused") public class BanHammerPlugin extends JavaPlugin { @Override public void onEnable() { - this.getCommand("ban").setExecutor(new BanCommand(this.getLogger())); - this.getCommand("unban").setExecutor(new UnbanCommand(this.getLogger())); + ApplicationContext context = createSpringContext(); + + this.getCommand("ban").setExecutor(context.getBean(BanCommand.class)); + this.getCommand("unban").setExecutor(context.getBean(UnbanCommand.class)); + } + + private ApplicationContext createSpringContext() { + AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); + context.setClassLoader(this.getClassLoader()); + context.registerBean("bukkitLogger", Logger.class, this::getLogger); + context.register(SpringConfig.class); + context.refresh(); + + return context; } } diff --git a/src/main/java/ru/dmitriymx/plugin/SpringConfig.java b/src/main/java/ru/dmitriymx/plugin/SpringConfig.java new file mode 100644 index 0000000..9c9c964 --- /dev/null +++ b/src/main/java/ru/dmitriymx/plugin/SpringConfig.java @@ -0,0 +1,10 @@ +package ru.dmitriymx.plugin; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan("ru.dmitriymx.plugin") +public class SpringConfig { + +} diff --git a/src/main/java/ru/dmitriymx/plugin/command/BanCommand.java b/src/main/java/ru/dmitriymx/plugin/command/BanCommand.java index 0f401fc..63092fb 100644 --- a/src/main/java/ru/dmitriymx/plugin/command/BanCommand.java +++ b/src/main/java/ru/dmitriymx/plugin/command/BanCommand.java @@ -3,14 +3,20 @@ package ru.dmitriymx.plugin.command; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; import java.util.logging.Logger; +@Component public class BanCommand implements CommandExecutor { private final Logger logger; - public BanCommand(Logger logger) { + @Autowired + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") + public BanCommand(@Qualifier("bukkitLogger") Logger logger) { this.logger = logger; } diff --git a/src/main/java/ru/dmitriymx/plugin/command/UnbanCommand.java b/src/main/java/ru/dmitriymx/plugin/command/UnbanCommand.java index 59cdb97..e9c7bcd 100644 --- a/src/main/java/ru/dmitriymx/plugin/command/UnbanCommand.java +++ b/src/main/java/ru/dmitriymx/plugin/command/UnbanCommand.java @@ -3,14 +3,20 @@ package ru.dmitriymx.plugin.command; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; import java.util.logging.Logger; +@Component public class UnbanCommand implements CommandExecutor { private final Logger logger; - public UnbanCommand(Logger logger) { + @Autowired + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") + public UnbanCommand(@Qualifier("bukkitLogger") Logger logger) { this.logger = logger; }