+-
如何在Spring中覆盖@Value注入的字段值?
我有一个类,使用@Value从属性注入一个字段:

public class MyClass {
    @Value(${property.key})
    private String filePath;
    ...

我的集成测试需要将filePath更改为指向某些不同的文件.

在调用方法之前,我尝试使用反射来设置它:

public class MyClassIT {
    @Autowired MyClass myClass;

    @Test
    public void testMyClassWithTestFile1 {
        ReflectionTestUtils.setField(myClass, "filePath", "/tests/testfile1.csv");
        myClass.invokeMethod1();
        ...

但是当调用第一个方法时,@ Value注入将启动并更改刚刚设置的值.任何人都可以建议如何解决这个或另一种方法?

注意:我需要Spring来管理类(因此注入了其他依赖项),并且使用不同的测试文件需要对同一个类进行其他测试.

最佳答案
只需使用一个二传手.无论如何,通常最好使用setter注入而不是现场注入.更好的是,完全转换为构造函数和setter注入,通常可以用模拟替换Spring测试上下文.
点击查看更多相关文章

转载注明原文:如何在Spring中覆盖@Value注入的字段值? - 乐贴网