- ◆ 支持核心
- Spigot,CatServer
- ◆ 插件前置
- 无
- ◆ 游戏版本
- 1.12.2+
闲着无聊倒腾出来的东西,大概有点作用吧
平时写插件的时候,代码可能充斥着下面这坨东西
``` java
var permission = javaPlugin#getConfig("req-permission")
.......
```
这样重复度高的代码,你可以使用 BukkitIoc 干掉它!
BukkitIoc以注解代替这些繁琐的工作
快速开始
在plugin.yml中加入 `depend: BukkitIoc` 后,新建一个配置类
使用@ComponentScan(xxx)注解,xxx表示IOC容器托管的作用域
例如:
之后在onEnable钩子中调用
```
BukkitIocManager.bukkitIocManager.register(this,BaseConfig.class);
```
到这里,便完成了。 在register后,bukkitioc默认会将你的JavaPlugin实例托管
你可以在任意地方使用
更多的注入请参考下文
支持的注入方式
1. @Value(name="path") : 基本类型注入
字符串浮点数等基本类型,可以通过@Value注解注入(来自config.yml)
比如这样的yaml结构:
对应的组件实现
PropertyResolver默认提供了float,integer等类型的转换,如果你需要将读取字符串转换为其他类型
可以通过PropertyResolver.registerConvert(Class<?> classType,Function<String,Object> function)注册
2. @Bean: 工厂方法
被@Configuration类中的@Bean注解方法所返回的对象,会被BukkitIoc全局唯一托管
3. @Autowired: 自动注入
当你要在其他地方使用注册的Bean时,只需要使用@Autowired 注入
另外,也可以在构造器和set方法中使用
其他
如果你熟悉Spring的话,这个项目提供了仿Spring最小的IOC容器实现,你完全可以像使用Spring一样熟悉它
(请看AnnotationConfigApplicationContext类)
开源地址: https://github.com/meteorOSS/BukkitIoc
有任何问题欢迎加入群聊653440235讨论
平时写插件的时候,代码可能充斥着下面这坨东西
``` java
var permission = javaPlugin#getConfig("req-permission")
.......
```
这样重复度高的代码,你可以使用 BukkitIoc 干掉它!
BukkitIoc以注解代替这些繁琐的工作
快速开始
在plugin.yml中加入 `depend: BukkitIoc` 后,新建一个配置类
使用@ComponentScan(xxx)注解,xxx表示IOC容器托管的作用域
例如:
Java:
@ComponentScan("com.meteor.kingdomssync")
public class BaseConfig {
}
之后在onEnable钩子中调用
```
BukkitIocManager.bukkitIocManager.register(this,BaseConfig.class);
```
到这里,便完成了。 在register后,bukkitioc默认会将你的JavaPlugin实例托管
你可以在任意地方使用
Java:
@Autowired
private KingdomsSync plugin;
更多的注入请参考下文
支持的注入方式
1. @Value(name="path") : 基本类型注入
字符串浮点数等基本类型,可以通过@Value注解注入(来自config.yml)
比如这样的yaml结构:
代码:
shop:
title: '商店'
player: 20
Java:
import com.meteor.bukkitioc.annotation.Component;
import com.meteor.bukkitioc.annotation.Value;
@Component("shop")
public class Shop {
@Value("shop.title")
private String title;
@Value("shop.player")
private int player;
}
PropertyResolver默认提供了float,integer等类型的转换,如果你需要将读取字符串转换为其他类型
可以通过PropertyResolver.registerConvert(Class<?> classType,Function<String,Object> function)注册
2. @Bean: 工厂方法
Java:
@Configuration
public class ShopItemFactory {
// 工厂方法注入
@Bean(value = "fake_dick")
public ShopItem getFakeDick(){
return new ShopItem("fake_dick",20000,"a fake dick");
}
}
被@Configuration类中的@Bean注解方法所返回的对象,会被BukkitIoc全局唯一托管
3. @Autowired: 自动注入
当你要在其他地方使用注册的Bean时,只需要使用@Autowired 注入
Java:
import com.meteor.bukkitioc.annotation.Autowired;
import com.meteor.bukkitioc.annotation.Configuration;
import com.meteor.bukkitiocexample.components.ShopItem;
@Configuration
public class BaseConfig {
@Autowired(name = "fake_dick")
public static ShopItem fakeDick;
}
另外,也可以在构造器和set方法中使用
其他
如果你熟悉Spring的话,这个项目提供了仿Spring最小的IOC容器实现,你完全可以像使用Spring一样熟悉它
(请看AnnotationConfigApplicationContext类)
开源地址: https://github.com/meteorOSS/BukkitIoc
有任何问题欢迎加入群聊653440235讨论