use Placeholder
This commit is contained in:
@@ -5,6 +5,8 @@ import org.springframework.context.ApplicationContext;
|
|||||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||||
import ru.dmitriymx.plugin.command.BanCommand;
|
import ru.dmitriymx.plugin.command.BanCommand;
|
||||||
import ru.dmitriymx.plugin.command.UnbanCommand;
|
import ru.dmitriymx.plugin.command.UnbanCommand;
|
||||||
|
import ru.dmitriymx.plugin.config.BukkitYamlPlaceholderConfigurer;
|
||||||
|
import ru.dmitriymx.plugin.config.SpringConfig;
|
||||||
|
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
@@ -13,8 +15,13 @@ public class BanHammerPlugin extends JavaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
this.saveDefaultConfig();
|
||||||
|
|
||||||
ApplicationContext context = createSpringContext();
|
ApplicationContext context = createSpringContext();
|
||||||
|
|
||||||
|
//TODO для демонстрации
|
||||||
|
getLogger().info("dburl: " + context.getBean("databaseUrl", String.class));
|
||||||
|
|
||||||
this.getCommand("ban").setExecutor(context.getBean(BanCommand.class));
|
this.getCommand("ban").setExecutor(context.getBean(BanCommand.class));
|
||||||
this.getCommand("unban").setExecutor(context.getBean(UnbanCommand.class));
|
this.getCommand("unban").setExecutor(context.getBean(UnbanCommand.class));
|
||||||
}
|
}
|
||||||
@@ -22,6 +29,7 @@ public class BanHammerPlugin extends JavaPlugin {
|
|||||||
private ApplicationContext createSpringContext() {
|
private ApplicationContext createSpringContext() {
|
||||||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
||||||
context.setClassLoader(this.getClassLoader());
|
context.setClassLoader(this.getClassLoader());
|
||||||
|
context.addBeanFactoryPostProcessor(new BukkitYamlPlaceholderConfigurer(this.getConfig()));
|
||||||
context.registerBean("bukkitLogger", Logger.class, this::getLogger);
|
context.registerBean("bukkitLogger", Logger.class, this::getLogger);
|
||||||
context.register(SpringConfig.class);
|
context.register(SpringConfig.class);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
package ru.dmitriymx.plugin;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@ComponentScan("ru.dmitriymx.plugin")
|
|
||||||
public class SpringConfig {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package ru.dmitriymx.plugin.config;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
public class BukkitYamlPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
|
||||||
|
|
||||||
|
private final FileConfiguration fileConfiguration;
|
||||||
|
|
||||||
|
public BukkitYamlPlaceholderConfigurer(FileConfiguration fileConfiguration) {
|
||||||
|
this.fileConfiguration = fileConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String resolvePlaceholder(String placeholder, Properties props) {
|
||||||
|
return Optional.ofNullable(fileConfiguration.getString(placeholder))
|
||||||
|
.orElseGet(() -> super.resolvePlaceholder(placeholder, props));
|
||||||
|
}
|
||||||
|
}
|
||||||
26
src/main/java/ru/dmitriymx/plugin/config/SpringConfig.java
Normal file
26
src/main/java/ru/dmitriymx/plugin/config/SpringConfig.java
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
package ru.dmitriymx.plugin.config;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@ComponentScan("ru.dmitriymx.plugin")
|
||||||
|
public class SpringConfig {
|
||||||
|
|
||||||
|
@Value("${database.url}")
|
||||||
|
private String databaseUrl;
|
||||||
|
|
||||||
|
@Value("${database.user}")
|
||||||
|
private String databaseUser;
|
||||||
|
|
||||||
|
@Value("${database.password}")
|
||||||
|
private String databasePassword;
|
||||||
|
|
||||||
|
//TODO для демонстрации
|
||||||
|
@Bean("databaseUrl")
|
||||||
|
public String getDatabaseUrl() {
|
||||||
|
return databaseUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
4
src/main/resources/config.yml
Normal file
4
src/main/resources/config.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
database:
|
||||||
|
url: some-url
|
||||||
|
user: some-user
|
||||||
|
password: some-password
|
||||||
Reference in New Issue
Block a user