【问题标题】:dynamic property names with spring带弹簧的动态属性名称
【发布时间】:2016-05-23 11:43:23
【问题描述】:

我正在使用 spring 4 PropertyPlaceHolder:

<bean id="propertyConfigurer"
    class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>/WEB-INF/database.properties</value>
            <value>/WEB-INF/app.properties</value>    
            <value>/WEB-INF/cdservice.properties</value>            
        </list>
    </property> 

</bean>

我想从属性文件中读取我正在读取的应用程序中的属性:

@Service
public class FileUploadServiceImpl implements FileUploadService {

    @Value("${supporting.documents.location}")
    private String supportingDocumentsLocation;

    @Override
    public String removeFile(String xyz) {
       //Here I want to read property xyz which is dynamic
    }

}

与上面的代码一样,我可以使用 @Value 注释读取静态属性。 但是我怎样才能读取像 xyz 这样的动态属性。请建议?

【问题讨论】:

    标签: spring spring-mvc


    【解决方案1】:

    将 Spring Environment 注入到您的 bean 中,您可以读取任意属性:

    @Service
    public class FileUploadServiceImpl implements FileUploadService {
    
        @Autowired
        private Environment environment;
    
        @Value("${supporting.documents.location}")
        private String supportingDocumentsLocation;
    
        @Override
        public String removeFile(String xyz) {
            String value = environment.getProperty(xyz);
        }
    
    }
    

    【讨论】:

    • 编译但返回null
    • 那么xyz引用的属性没有设置。来自Environment.getProperty(String key) 的文档:“返回与给定键关联的属性值,如果无法解析该键,则返回 null。”
    猜你喜欢
    • 2020-02-16
    • 2011-10-23
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    相关资源
    最近更新 更多