Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Spring Environment.getProperty()获取列表时出现Java通用警告_Java_Spring_Environment Variables - Fatal编程技术网

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

使用Spring Environment.getProperty()获取列表时出现Java通用警告,java,spring,environment-variables,Java,Spring,Environment Variables,这可能是一个没有答案的问题,因为java通用警告很难消除,但我想尝试一下。 我们正在从Spring2.x迁移到3.x,因此将SpringXML转换为基于SpringJava的配置。在这样做的同时,我们开始使用环境来获取字符串列表 因此,XML是这样的: <bean id="test" class="ClassName"> <constructor-arg index="0" value ="value1,value2,value3" /> </bean&g

这可能是一个没有答案的问题,因为java通用警告很难消除,但我想尝试一下。 我们正在从Spring2.x迁移到3.x,因此将SpringXML转换为基于SpringJava的配置。在这样做的同时,我们开始使用环境来获取字符串列表

因此,XML是这样的:

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

现在,spring显然将构造函数参数转换为一个列表,并将其传递给构造函数

但是,现在我们使用的是基于Java的配置环境

@SuppressWarnings("unchecked")
@Bean
public ClassName getBean() {
    List<String> strings = env.getProperty("prop.values", List.class);
    return new ClassName(strings);
}
@SuppressWarnings(“未选中”)
@豆子
公共类名getBean(){
列表字符串=env.getProperty(“prop.values”,List.class);
返回新的类名(字符串);
}
现在很明显,我必须在方法上添加@SuppressWarnings(“unchecked”),因为这一行生成了警告

List<String> strings = env.getProperty("prop.values", List.class);
List strings=env.getProperty(“prop.values”,List.class);
由于我们在构建bean时在许多地方注入列表,人们对此表示不满,不愿意使用基于Java的配置


可能没有办法抑制此警告,如果没有,在Spring中是否有更好的方法不生成这样的警告?谢谢。

为什么要手动从
环境中提取东西?Spring是一个依赖注入框架;也可以注入环境值

试试这个:

@Configuration
public class MyConfiguration {

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

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

仅仅因为你可以使用Spring的Java配置,并不意味着你必须这样做。你能举例说明一下你的
ClassName
构造函数和
prop.values
属性的值吗?@SotiriosDelimanolis我理解你的观点。如果没有更好的方法,我们可能会将一些xml与java配置混合使用。只是想在我们排除之前确定一下。作为一个例子,想象一下任何一个简单的类,它将List作为构造函数中的一个参数。没什么大不了的。你可以通过拆分
env.getProperty(“prop.values”)
返回的
String
并将数组元素添加到
列表中来创建
列表。好吧,这就是重点,它的锅炉板材料,我认为spring足够聪明,可以提供类似的东西。从Xml迁移到Java配置的人不喜欢这样。
@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;
}