Jakarta ee EJB3.1属性文件注入
是否有一些简单的方法将类中加载了文件的属性类从类路径注入EJB(3.1) 大概是这样的:Jakarta ee EJB3.1属性文件注入,jakarta-ee,ejb-3.1,Jakarta Ee,Ejb 3.1,是否有一些简单的方法将类中加载了文件的属性类从类路径注入EJB(3.1) 大概是这样的: @Resource(name="filename.properties", loader=some.properties.loader) private Properties someProperties; 谢谢, Bozo正如bkail所说,您可以通过以下方式实现这一点。我不确定您的loader=some.properties.loader真正的意思是什么,因此跳过了使用它的任何操作,但提供了一个选项,
@Resource(name="filename.properties", loader=some.properties.loader)
private Properties someProperties;
谢谢,
Bozo正如bkail所说,您可以通过以下方式实现这一点。我不确定您的
loader=some.properties.loader
真正的意思是什么,因此跳过了使用它的任何操作,但提供了一个选项,以防您希望使用loader.getClass().getResourceAsStream(“filename.properties”)加载代码>
首先定义您的注入类型
@BindingType
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD,
ElementType.PARAMETER })
public @interface PropertiesResource {
@Nonbinding
public String name();
@Nonbinding
public String loader();
}
然后为它创建一个制作人
public class PropertiesResourceLoader {
@Produces
@PropertiesResource(name = "", loader = "")
Properties loadProperties(InjectionPoint ip) {
System.out.println("-- called PropertiesResource loader");
PropertiesResource annotation = ip.getAnnotated().getAnnotation(
PropertiesResource.class);
String fileName = annotation.name();
String loader = annotation.loader();
Properties props = null;
// Load the properties from file
URL url = null;
url = Thread.currentThread().getContextClassLoader()
.getResource(fileName);
if (url != null) {
props = new Properties();
try {
props.load(url.openStream());
} catch (IOException e) {
e.printStackTrace();
}
}
return props;
}
}
然后将其注入到命名组件中
@Inject
@PropertiesResource(name = "filename.properties", loader = "")
private Properties props;
我查看了焊接文档,其中以@HttpParam为例。这是根据焊缝1.1.0,在焊缝1.0.0中,可以这样做获取注释
PropertiesResource annotation = ip.getAnnotation(PropertiesResource.class);
如果您使用的应用服务器将WELD作为CDI实现(Glassfish 3.x或JBoss 7.x或Weblogic 12是示例),那么您希望使用WELD扩展,这在WELD文档中有说明
只需将其添加到POM中即可
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-extensions</artifactId>
<version>${weld.extensions.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
org.jboss.weld
延长焊缝
${weld.extensions.version}
聚甲醛
进口
在标准JavaEE中不容易。我怀疑CDI可以用@Inject+@产品做类似的事情,但我对CDI不够熟悉。(留下这篇评论,希望其他人可以填写细节。)