我有ENUM
package com.myorg.sparrow.s3Environment;
import javax.annotation.Nonnull;
public enum DocumentType {
Document("document/", ".xml.gz", "binary/octet-stream", "gzip", true);
private final String path;
private final String suffix;
private final String contentType;
private final String contentEncoding;
private final Boolean compress;
private DocumentType(@Nonnull final String path, @Nonnull final String suffix,
@Nonnull final String contentType, @Nonnull final String contentEncoding,
@Nonnull final Boolean compress) {
this.path = path;
this.suffix = suffix;
this.contentType = contentType;
this.contentEncoding = contentEncoding;
this.compress = compress;
}
@Nonnull
public String getPath() {
return path;
}
@Nonnull
public String getSuffix() {
return suffix;
}
@Nonnull
public String getContentType() {
return contentType;
}
@Nonnull
public String getContentEncoding() {
return contentEncoding;
}
@Nonnull
public Boolean isCompress() {
return compress;
}
}
我想在DocumentType.Document
配置文件
Spring
的这个值
<bean id="s3Service" class="com.myorg.sparrow.business.xml.persist.S3Service">
<constructor-arg ref="awsCredentials" />
<constructor-arg value="**DocumentType.DOCUMENT**" /> // how do I inject it here?
<constructor-arg value="${com.myorg.sparrow.s3EnvironmentConfiguration.S3EnvironmentConfigurator-destBucketName}" />
</bean>
如何在
中注入此值<constructor-arg value="**DocumentType.DOCUMENT**" /> // how do I inject it here?
我是Spring框架的新手,不知道如何实现这个
谢谢
答案 0 :(得分:14)
<bean id="s3Service" class="com.myorg.sparrow.business.xml.persist.S3Service">
<constructor-arg ref="awsCredentials" />
<constructor-arg value="Document" /> // We love Spring because it is simpler than we expect
<constructor-arg value="${com.myorg.sparrow.s3EnvironmentConfiguration.S3EnvironmentConfigurator-destBucketName}" />
</bean>
答案 1 :(得分:0)
好像你需要使用“org.springframework.beans.factory.config.FieldRetrievingFactoryBean”
示例:
<property name="b">
<bean class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="targetClass" value="whole.package.path.A$B"></property>
<property name="targetField" value="FIRST"></property>
</bean>
</property>
参考文献:
http://forum.springsource.org/showthread.php?19396-Accessing-enum-value-defined-in-inner-class
http://forum.springsource.org/showthread.php?19696-Spring-1-2-3-How-do-I-inject-Java-1-5-Enums