Spring: How do I add ENUM to a Spring configuration?

I have ENUM as

 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; } } 

I want to enter this DocumentType.Document value in the Spring configuration file

  <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> 

How do I paste this value into

 <constructor-arg value="**DocumentType.DOCUMENT**" /> // how do I inject it here? 

I am very new to Spring framework and not sure how to achieve this.

thanks

+6
source share
2 answers
  <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> 
+14
source

It looks like you need to use "org.springframework.beans.factory.config.FieldRetrievingFactoryBean"

Example:

 <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> 

Literature:

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

0
source

All Articles