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; }