Guice properties injection(Guice属性注入)
本文介绍了Guice属性注入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的项目结构如下:
其中我的Test1.java是这样的:
package TestNG;
import org.testng.annotations.Test;
import com.google.inject.Inject;
import com.google.inject.name.Named;
public class Test1 {
@Inject
@Named("semi-auto.firstname")
String firstname;
@Test
public void test() {
System.out.println(firstname);
}
}
我的半自动属性是
semi-auto.firstname=John
semi-auto.lastname=Doe
我想做的是在使用Guice的Test1中使用‘Firstname’参数值。 测试通过,但传递的值为空。 我不能这样做吗? 请帮帮忙
推荐答案
您需要编写一个模块来配置Guice以加载属性文件(并绑定您拥有的任何其他依赖项)。
class SemiAutoModule extends AbstractModule {
@Override
protected void configure() {
Properties defaults = new Properties();
defaults.setProperty("semi-auto.firstname", "default firstname");
try {
Properties properties = new Properties(defaults);
properties.load(ClassLoader.class.getResourceAsStream("semi-auto.properties"));
Names.bindProperties(binder(), props);
} catch (IOException e) {
logger.error("Could not load config: ", e);
System.exit(1);
}
}
};
然后您需要告诉TestNG:
@Guice(modules=SemiAutoModule.class)
public class Test1 {
@Inject
@Named("semi-auto.firstname")
String firstname;
@Test
public void test() {
System.out.println(firstname);
}
}
测试NG的文档如下:http://testng.org/doc/documentation-main.html#guice-dependency-injection。
这篇关于Guice属性注入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Guice属性注入


猜你喜欢
- 转换 ldap 日期 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- 获取数字的最后一位 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01