您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

spring-boot属性不是@Autowired

spring-boot属性不是@Autowired

您的配置会导致ConfigurationSettings该类的2个实例,并且一个实例可能会覆盖另一个实例。

@Component扫描组件(@ComponentScan)时,“ ConfigurationSettings”具有注释,这将导致一个实例。您还具有带@Bean注释的方法,该方法也可以导致实例。后者被第一个覆盖。

简而言之,删除@Component不需要的注释,因为您已经有了此类的工厂方法

public class ConfigurationSettings { ... }

您还应该删除@PropertySource注释,因为Spring-Boot已经application.properties为您加载了注释。

最后,您不应@ContextConfiguration在测试类上使用批注,而应@SpringApplicationConfiguration在应用程序类(而非配置类!)中使用和。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes=OFAC.class)
public class OFAConfigurationTest {

    @Autowired
    private Environment environment;

    @Autowired
    private ConfigurationSettings configurationSettings;

    @Test
    public void testConfigurationLoads() {
        assertNotNull(environment);
        assertNotNull(configurationSettings);
    }

    @Test
    public void testConfigurationSettingValues() {
        assertEquals("Product Name", configurationSettings.getProduct());
        assertEquals("0.0.1", configurationSettings.getVersion());
        assertEquals("2014 Product", configurationSettings.getCopyright());
    }

这将解决您的运行时配置问题,并使您的测试使用Spring Boot的功能来配置您的应用程序。

Java 2022/1/1 18:14:12 有536人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶