2012-10-23 6 views
6

Ich habe ein ENUM alsSpring: Wie injiziere ich ENUM in Spring Konfiguration?

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

ich diesen Wert von DocumentType.Document in Spring Dateikonfiguration injizieren wollen

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

Wie spritze ich diesen Wert in

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

bin ich sehr neu zu Spring framework und nicht sicher, wie dies zu erreichen ist

Danke

Antwort

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

Einfach genial! Danke @MK. – daydreamer

0

Scheint, wie Sie "org.springframework.beans.factory.config.FieldRetrievingFactoryBean" verwenden

Beispiel benötigen:

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

Referenzen:

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

Verwandte Themen