使用Spring Environment.getProperty()获取列表时的Java通用警告

时间:2013-12-16 19:08:46

标签: java spring environment-variables

这可能是一个没有答案的问题,因为Java通用警告很难摆脱,但想尝试一下。 我们正在从Spring 2.x迁移到3.x,因此将Spring XML转换为基于Spring Java的配置。在这样做时,我们开始使用Environment来获取字符串列表。

所以,XML就像这样:

<bean id="test" class="ClassName">
     <constructor-arg index="0" value ="value1,value2,value3" />
</bean>

现在,spring显然将构造函数参数转换为List并将其传递给构造函数。

但是,现在我们正在使用Environment。

@SuppressWarnings("unchecked")
@Bean
public ClassName getBean() {
    List<String> strings = env.getProperty("prop.values", List.class);
    return new ClassName(strings);
}

现在显然我必须在方法上放置@SuppressWarnings(&#34;未选中&#34;),因为此行会生成警告......

List<String> strings = env.getProperty("prop.values", List.class);

由于我们在构建bean时在很多地方注入了列表,人们对此抱怨并且不愿意使用基于Java的配置。

可能没有办法抑制此警告,如果没有,是否有更好的方法在Spring中执行此操作并不会产生这样的警告?感谢。

1 个答案:

答案 0 :(得分:0)

您为什么要手动从Environment中提取内容? Spring是一个依赖注入框架。环境值也可以注入!

尝试一下:

@Configuration
public class MyConfiguration {

    @Value("${prop.values}")
    private List<String> strings;

    @Bean
    public ClassName test() {
        return new ClassName(strings);
    }
}

或者更好的是,仅使用组件扫描。这样一来,您就可以完全放弃@Bean方法,而把更多的工作留给Spring。

@Component("test")
public ClassName {

    private List<String> strings;

    public ClassName(@Value("${prop.values}") List<String> strings) {
        this.strings = strings;
    }

}

@Component
public class MyClassThatUsesClassNameBean {

    @Autowired
    private ClassName test;
}