gpt4 book ai didi

java - 配置类 - Guice 的最佳实践

转载 作者:搜寻专家 更新时间:2023-11-01 02:31:53 25 4
gpt4 key购买 nike

背景:我正在使用 Google Guice,因此通过配置类更容易,但我认为这不是最好的方法。

我有一个存储一些路径的配置类:

class Configuration{
String getHomePath();
String getUserPath();
}

我还有一个需要“homepath”的类“a”和一个需要“userpath”的类“b”。

通过a类和b类的构造函数传递配置类还是只通过特定路径传递更好?

最佳答案

如果您真的正确地使用了 Guice,您所有的配置都应该出现在模块的 configure 方法中。所以:

  1. 删除配置类。
  2. 创建注释类,可能称为 HomePathUserPath
  3. a 类使用 getHomePath() 将其替换为名为 homePath 的 String 字段成员。
  4. 在类 b 使用 getUserPath() 的地方用名为 userPath 的字符串字段成员替换它。
  5. 修改a类和b类的构造函数为@Inject注解(应该已经是)并接受一个String参数,分别用@HomePath注解@UserPath 并分配注入(inject)值的String字段成员。
  6. 在模块的配置方法中创建绑定(bind)使用 .annotatedWith()定义正确的值;如果它们仅在运行时可用,则绑定(bind)一个提供者。

例如

class a {
private String homePath;
@Inject
public a(@HomePath String homePath) {
this.homePath = homePath;
}
public String tellMeAboutHome() {
return "We live in a nice home called " + homePath;
}
}

class customModule extends AbstractModule {
public static final String userPath = "/home/rafael";

public void configure() {
bind(String.class).annotatedWith(HomePath.class).to("/home/");
bind(String.class).annotatedWith(UserPath.class).to(userPath);
}
}

如果创建注释对您来说太麻烦,请使用@Named 注释 Guice ships with .

关于java - 配置类 - Guice 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7442384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com