|
|
|
@ -16,28 +16,42 @@ import org.springframework.context.annotation.Bean;
|
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ApiBeanConfig类用于配置Spring框架中的相关Bean,它是一个配置类,在Spring应用上下文初始化时发挥作用。
|
|
|
|
|
* 通过使用@Configuration注解标记该类为配置类,@AllArgsConstructor注解为其生成包含所有参数的构造函数。
|
|
|
|
|
* 此类主要负责创建并配置Snowflake实例这个Bean,用于生成分布式唯一ID。
|
|
|
|
|
*
|
|
|
|
|
* ApiBeanConfig类在Spring框架应用中扮演着配置类的角色,它的主要职责是对Spring框架中的相关Bean进行配置,
|
|
|
|
|
* 并在整个Spring应用上下文初始化的过程中发挥作用。
|
|
|
|
|
|
|
|
|
|
* 通过使用 @Configuration 注解,将这个类标记为Spring的配置类,告知Spring容器在启动时需要扫描并解析这个类中的配置信息,
|
|
|
|
|
* 以此来完成Bean的定义和装配等操作。
|
|
|
|
|
|
|
|
|
|
* @AllArgsConstructor 注解则是借助Lombok库的功能,为这个类自动生成一个包含所有参数的构造函数,方便进行依赖注入等操作。
|
|
|
|
|
|
|
|
|
|
* 此类核心功能在于创建并配置Snowflake实例这个Bean,Snowflake是一种常用于分布式系统中生成唯一ID的工具,
|
|
|
|
|
* 可以确保在复杂的分布式环境下,生成的ID具有唯一性,满足业务系统对于数据标识唯一性的需求。
|
|
|
|
|
|
|
|
|
|
* @author lanhai
|
|
|
|
|
*/
|
|
|
|
|
@Configuration
|
|
|
|
|
@AllArgsConstructor
|
|
|
|
|
public class ApiBeanConfig {
|
|
|
|
|
|
|
|
|
|
// 依赖注入ApiConfig实例,用于获取配置信息(如workerId和datacenterId)来初始化Snowflake实例
|
|
|
|
|
// 通过Lombok生成的构造函数注入ApiConfig实例,ApiConfig实例应该是用于承载和提供配置相关信息的类,
|
|
|
|
|
// 在这里主要是为了获取其中的workerId和datacenterId两个参数,这两个参数对于初始化Snowflake实例至关重要,
|
|
|
|
|
// 它们在分布式环境下帮助确定Snowflake生成唯一ID的工作节点和数据中心标识,从而保证生成的ID在整个分布式系统中是唯一的。
|
|
|
|
|
private final ApiConfig apiConfig;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* snowflake方法用于创建并返回一个Snowflake实例作为Spring的Bean。
|
|
|
|
|
* Snowflake是一种分布式ID生成器,通过传入workerId和datacenterId来保证在分布式环境下生成唯一的ID。
|
|
|
|
|
* 这里使用了从ApiConfig中获取的workerId和datacenterId来初始化Snowflake实例。
|
|
|
|
|
*
|
|
|
|
|
* @return 返回一个配置好的Snowflake实例,该实例将被Spring容器管理,可在其他需要生成分布式唯一ID的地方注入使用。
|
|
|
|
|
* snowflake方法是一个被 @Bean 注解修饰的方法,在Spring框架中,带有 @Bean 注解的方法用于向Spring容器中注册一个Bean。
|
|
|
|
|
* 具体来说,这个方法的功能是创建并返回一个Snowflake实例作为Spring的Bean,以便Spring容器能够对其进行管理,
|
|
|
|
|
* 并且在其他需要生成分布式唯一ID的地方,可以方便地通过依赖注入的方式获取并使用这个实例。
|
|
|
|
|
|
|
|
|
|
* Snowflake实例的初始化需要传入workerId和datacenterId两个参数,这里通过调用apiConfig的相应方法来获取这两个参数,
|
|
|
|
|
* 以此保证Snowflake实例能够依据正确的配置在分布式环境下生成唯一的ID。
|
|
|
|
|
|
|
|
|
|
* @return 返回一个配置好的Snowflake实例,这个实例将由Spring容器进行管理,后续在整个应用的其他代码部分,
|
|
|
|
|
* 只要有生成分布式唯一ID的需求,都可以通过依赖注入的方式获取并使用这个实例来完成相应的操作。
|
|
|
|
|
*/
|
|
|
|
|
@Bean
|
|
|
|
|
public Snowflake snowflake() {
|
|
|
|
|
// 使用从ApiConfig中获取的workerId和datacenterId来实例化Snowflake对象,确保其在分布式环境下能正确生成唯一ID。
|
|
|
|
|
return new Snowflake(apiConfig.getWorkerId(), apiConfig.getDatacenterId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|