Skip to content

核心 API 参考

LCGYL Framework 核心模块的 API 参考文档。

IoC/DI 容器

@Component

标记一个类为组件,由容器管理。

java
@Component
public class UserService {
    // ...
}

参数

  • value (String): 组件名称,默认为类名首字母小写
  • scope (Scope): 作用域,默认为 SINGLETON

@Inject

标记需要注入的依赖。

java
@Component
public class UserService {
    
    @Inject
    private UserRepository userRepository;
    
    // 或构造器注入(推荐)
    @Inject
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

Container

IoC 容器,管理组件的生命周期。

java
// 获取容器实例
Container container = Container.getInstance();

// 注册组件
container.register(UserService.class);

// 获取组件
UserService userService = container.get(UserService.class);

// 获取所有组件
List<Object> components = container.getAll();

方法

  • register(Class<?>): 注册组件类
  • register(String, Object): 注册组件实例
  • get(Class<T>): 获取组件
  • get(String): 根据名称获取组件
  • getAll(): 获取所有组件
  • contains(Class<?>): 检查是否包含组件

事件总线

Event

事件接口,所有事件都应实现此接口。

java
public record UserCreatedEvent(User user) implements Event {
}

EventBus

事件总线,用于发布和订阅事件。

java
// 获取事件总线
EventBus eventBus = EventBus.getInstance();

// 发布事件
eventBus.publish(new UserCreatedEvent(user));

// 订阅事件
eventBus.subscribe(UserCreatedEvent.class, event -> {
    System.out.println("用户已创建: " + event.user().getName());
});

方法

  • publish(Event): 发布事件
  • publishAsync(Event): 异步发布事件
  • subscribe(Class<E>, Consumer<E>): 订阅事件
  • unsubscribe(Class<E>, Consumer<E>): 取消订阅

@EventListener

标记事件监听器方法。

java
@Component
public class UserEventListener {
    
    @EventListener
    public void onUserCreated(UserCreatedEvent event) {
        System.out.println("用户已创建: " + event.user().getName());
    }
}

参数

  • async (boolean): 是否异步处理,默认 false
  • priority (int): 优先级,数字越小优先级越高

AOP

Interceptor

拦截器接口。

java
public interface Interceptor {
    Object intercept(Invocation invocation) throws Throwable;
}

Invocation

调用上下文。

java
public record Invocation(
    Object target,
    Method method,
    Object[] args,
    InterceptorChain chain
) {
    public Object proceed() throws Throwable {
        return chain.proceed(this);
    }
}

方法

  • target(): 获取目标对象
  • method(): 获取方法
  • args(): 获取参数
  • proceed(): 继续执行

ProxyFactory

代理工厂。

java
// 创建代理
UserService proxy = ProxyFactory.createProxy(
    userService,
    List.of(new LoggingInterceptor())
);

方法

  • createProxy(T, List<Interceptor>): 创建代理对象

配置管理

Configuration

配置接口。

java
Configuration config = ConfigurationManager.load("application.properties");

// 获取配置
String name = config.getString("app.name");
int port = config.getInt("server.port");
boolean debug = config.getBoolean("app.debug", false);

方法

  • getString(String): 获取字符串配置
  • getInt(String): 获取整数配置
  • getLong(String): 获取长整数配置
  • getDouble(String): 获取浮点数配置
  • getBoolean(String): 获取布尔配置
  • get(String, Class<T>): 获取自定义类型配置
  • contains(String): 检查是否包含配置

@ConfigurationProperties

配置属性绑定。

java
@ConfigurationProperties(prefix = "app")
public class AppConfig {
    private String name;
    private String version;
    // Getters and Setters
}

参数

  • prefix (String): 配置前缀

ConfigurationManager

配置管理器。

java
// 加载配置
Configuration config = ConfigurationManager.load("application.properties");

// 绑定配置
AppConfig appConfig = ConfigurationManager.bind(AppConfig.class, config);

// 设置激活环境
ConfigurationManager.setActiveProfile("prod");

方法

  • load(String): 加载配置文件
  • bind(Class<T>, Configuration): 绑定配置到对象
  • setActiveProfile(String): 设置激活环境

插件系统

Plugin

插件接口。

java
public interface Plugin {
    void load();
    void initialize();
    void start();
    void stop();
    void destroy();
    void unload();
}

PluginManager

插件管理器。

java
PluginManager manager = new PluginManager();

// 加载插件
manager.loadPlugin("plugin.jar");

// 启动插件
manager.startPlugin("my-plugin");

// 停止插件
manager.stopPlugin("my-plugin");

// 卸载插件
manager.unloadPlugin("my-plugin");

方法

  • loadPlugin(String): 加载插件
  • startPlugin(String): 启动插件
  • stopPlugin(String): 停止插件
  • unloadPlugin(String): 卸载插件
  • getPlugin(String): 获取插件
  • getAllPlugins(): 获取所有插件

下一步

Released under the Apache License 2.0