spring-boot属性不是@Autowired

spring-boot属性不是@Autowired,第1张

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的功能来配置您的应用程序。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5011931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存