You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Guice:如何为同一类绑定不同参数生成多个实例?

实现方式

1. 构造方法直接创建

给Foo类添加带参数的构造方法,手动传入不同参数生成实例:

class Foo {
    private String config;

    // 带参数的构造方法
    public Foo(String config) {
        this.config = config;
    }

    // 可选:添加getter方法查看配置值
    public String getConfig() {
        return config;
    }
}

// 创建两个不同配置的实例
Foo fooA = new Foo("A");
Foo fooB = new Foo("B");

2. 工厂模式封装创建逻辑

如果需要统一管理实例的创建规则(比如参数校验、初始化逻辑),可以用工厂类封装:

class FooFactory {
    public static Foo createFoo(String config) {
        // 示例:添加参数非空校验
        if (config == null || config.isBlank()) {
            throw new IllegalArgumentException("config参数不能为空");
        }
        return new Foo(config);
    }
}

// 通过工厂创建实例
Foo fooA = FooFactory.createFoo("A");
Foo fooB = FooFactory.createFoo("B");

3. Spring环境下的依赖注入实现

如果是在Spring项目中,可以通过@Bean注解定义不同命名的实例,注入时指定名称区分:

@Configuration
public class FooConfig {
    @Bean("fooA")
    public Foo fooInstanceA() {
        return new Foo("A");
    }

    @Bean("fooB")
    public Foo fooInstanceB() {
        return new Foo("B");
    }
}

// 使用时通过@Qualifier指定实例名称注入
@Service
public class DemoService {
    private final Foo fooA;
    private final Foo fooB;

    public DemoService(@Qualifier("fooA") Foo fooA, @Qualifier("fooB") Foo fooB) {
        this.fooA = fooA;
        this.fooB = fooB;
    }
}

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 04:45:32