use Placeholder
This commit is contained in:
@@ -5,6 +5,8 @@ import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import ru.dmitriymx.plugin.command.BanCommand;
|
||||
import ru.dmitriymx.plugin.command.UnbanCommand;
|
||||
import ru.dmitriymx.plugin.config.BukkitYamlPlaceholderConfigurer;
|
||||
import ru.dmitriymx.plugin.config.SpringConfig;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@@ -13,8 +15,13 @@ public class BanHammerPlugin extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
this.saveDefaultConfig();
|
||||
|
||||
ApplicationContext context = createSpringContext();
|
||||
|
||||
//TODO для демонстрации
|
||||
getLogger().info("dburl: " + context.getBean("databaseUrl", String.class));
|
||||
|
||||
this.getCommand("ban").setExecutor(context.getBean(BanCommand.class));
|
||||
this.getCommand("unban").setExecutor(context.getBean(UnbanCommand.class));
|
||||
}
|
||||
@@ -22,6 +29,7 @@ public class BanHammerPlugin extends JavaPlugin {
|
||||
private ApplicationContext createSpringContext() {
|
||||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
||||
context.setClassLoader(this.getClassLoader());
|
||||
context.addBeanFactoryPostProcessor(new BukkitYamlPlaceholderConfigurer(this.getConfig()));
|
||||
context.registerBean("bukkitLogger", Logger.class, this::getLogger);
|
||||
context.register(SpringConfig.class);
|
||||
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