- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 Guice 自动注入(inject)配置项。我的配置框架是typesafe的config。
public class MyObject {
@Configuration("value") int value;
}
为此,我写了一个注释。
// Annotations skipped, but correct
public @interface Configuration {
String value();
}
然后我写了一个模块。该模块检查所有要注入(inject)的类型,然后允许注入(inject)本身。
public class ConfigurationModule extends AbstractModule {
@Override protected void configure() {
final Config config = ConfigFactory.load();
class ConfigurationMembersInjector<T> implements MembersInjector<T> {
private final Field field;
ConfigurationMembersInjector(Field field) {
this.field = field;
field.setAccessible(true);
}
@Override public void injectMembers(T t) {
try {
String key = field.getAnnotation(Configuration.class).value();
field.set(t, config.getXxxx()); // what to write?
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
class ConfigurationTypeListener implements TypeListener {
@Override public <T> void hear(TypeLiteral<T> typeLiteral, TypeEncounter<T> typeEncounter) {
for (Field field : typeLiteral.getRawType().getDeclaredFields()) {
if (field.isAnnotationPresent(Configuration.class)) {
typeEncounter.register(new ConfigurationMembersInjector<T>(field));
}
}
}
}
bindListener(Matchers.any(), new ConfigurationTypeListener());
}
}
如何自动将配置项转换为特定但未知的类型?有没有办法说“我想把这个项目转换成这种类型”?另外,有没有办法“注册”自定义转换器?
否则,我是否必须自己编写转换机制?
最佳答案
另一种替代方法是使用 Classpath scanner扫描您的自定义注释(我假设是 Binding Annotation ),然后将您的配置值绑定(bind)到那些用这些注释注释的类型。
这正是我开发我的库所采用的方法:Typesafe Config Guice ,它绑定(bind)来自 Typesafe Config 的配置值文件到带注释的参数和字段。
关于java - typesafe 的配置是否支持自定义转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22718335/
这是我第一次使用 Typesafe Activator。我在 Windows 7 64 中使用版本 1.0.13 我在环境属性中成功创建了一个 JAVA_HOME。导航到我的 Activator 文件
我有以下配置文件,我想从 Scala 应用 this library 使用: P11 { yes="0.0" no="1.0" } P12 { yes="0.01" n
我正在尝试运行 Typesafe 激活器的 UI。当我运行它时,它表现得好像正在成功下载所有东西,但是抛出一个 java.lang.IlleagalArgumentException。我已经多次尝试运
Error: java.lang.IncompatibleClassChangeError: class com.typesafe.scalalogging.BaseLogger can not im
我在设置 sbt 时遇到了问题。我下载了一个“zip”并展开它,但是当我运行 sbt 命令时,发生了错误。 module not found: org.scala-sbt#sbt;0.13.8
我一直在Typesafe配置中使用environment variable substitution功能: foo = "foo" foo = ${?FOO} 如果没有名为FOO的环境变量,则结果为“
尝试在配置文件中使用${HOSTNAME}不起作用!根据文档,配置文件应解析文档中提到的环境变量: substitutions fall back to environment variables i
我正在使用Play Framework 1.2.3的脱机安装尝试Typesafe Activator 2.3.2。每个文档都告诉我,它在后台使用sbt来构建和运行项目。 该sbt在哪里安装?是在包含A
上下文 我想使用 Guice 自动注入(inject)配置项。我的配置框架是typesafe的config。 public class MyObject { @Configuration("val
从 Activator UI 运行主类时,我们如何指定参数? 肯定有办法做到这一点,对吧? 我使用的是最新的,1.2.10 提前致谢, 拉卡 最佳答案 据我所知,您不能使用激活器指定参数,但是您可以为
这通常是一个直接的问题,但我不完全确定如何在 Scala 中解决这个问题,因为它是类型敏感的。我有一个类,我在其中设置了到我的 MongoDB 实例的简单连接。现在在本地,我做了一个可怕的想法,即只注
我多次重新创建了相同的项目,之前曾将其从磁盘上删除过。 现在,“打开现有应用...”中填充了不存在的项目,并且Typesafe Activator向其添加了一个增量后缀,即项目名称-1,项目名称-2,
给定一个嵌套的 JSON 作为配置,例如: { app: { id: "app1" instances: 2, servers: [
我正在 Scala 中尝试从像 something.conf 这样的配置文件中获取列表与 TypeSafe . 在 something.conf我设置了参数: mylist=["AA","BB"] 在
我已经设法安装并完全搞砸了 Typesafe Activator 的安装. 有没有办法卸载该工具,以便我可以回到干净的状态并重新开始? 我在使用 JDK 1.8.0_25 的 Window 8.1 上
我目前正在开发一个基于 Gradle 的多模块 Java 项目,对于如何管理 TypeSafe 配置文件我有点困惑。这是我的项目结构。 --rootProject -- module1
我试图看看是否可以使用 Java Generics Wildcarding With Multiple Classes 中指定的泛型来实现一个可以接受两个不同的类的 Map 我试过了 public c
我已经用 Typesafe Activator 安装了 play framework(2.2),现在我想配置 Postgres 数据库。 我在各种帖子中发现 play 2.2 Build.scala
如何调用 Class.forName()什么时候结果是泛型?通常我可以使用 asSubclass() ,但这里我看到的唯一方法是强制转换,当其他所有内容都使用泛型很好地键入时,哪种方式会突出并困扰我。
如何将数组/值列表作为环境变量提供给 typesafe/lightbend 配置? application.conf default-buckets = [ 10, 30,
我是一名优秀的程序员,十分优秀!