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
相关产品推荐
相关产品推荐

