Java Spring@Component未正确读取.properties字段
我有几个Java Spring@Component未正确读取.properties字段,java,spring,spring-boot,Java,Spring,Spring Boot,我有几个@Configuration类,它们指定自定义@ConfigurationProperties(“sample”),并在中用于实例化几个bean,这些bean稍后将用于我的业务逻辑类 然而,我一直在尝试使用一个内部的@组件类来实现这种方法,所以我不需要在现有的特定或通用配置中使用它,然后看看会发生什么 @Component @ConfigurationProperties("myclass") public class MyClass { private String at
@Configuration
类,它们指定自定义@ConfigurationProperties(“sample”)
,并在中用于实例化几个bean,这些bean稍后将用于我的业务逻辑类
然而,我一直在尝试使用一个内部的@组件类来实现这种方法,所以我不需要在现有的特定或通用配置中使用它,然后看看会发生什么
@Component
@ConfigurationProperties("myclass")
public class MyClass {
private String attribute;
(Constructor, getters and setters for attribute and other methods...)
}
在我的application.properties
文件中,我将属性值指定为myclass.attribute=value
这样做每次都会导致空值。@Component
是否接受reading.properties文件,或者该文件是否仍在@Configuration
类中?即使在用@Component
注释的类中使用@ConfigurationProperties
,一切都正常工作。请尝试:
application.properties:
myclass.attribute=value
myclass.attribute=foo
MyClass类:
@Data
@Component
@ConfigurationProperties("myclass")
public class MyClass {
private String attribute;
}
测试等级:
@RunWith(SpringRunner.class)
@SpringBootTest
public class FooTests {
@Autowired
private MyClass myClass;
@Test
public void test() {
System.out.println(myClass.getAttribute());
}
}
您确实需要在配置类(例如应用程序类)上添加@EnableConfigurationProperties
注释
@SpringBootApplication
@EnableConfigurationProperties
public class MySpringBootApp {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApp.class);
}
}
我从未使用过@ConfigurationProperties
注释,但是如果您想从应用程序中的值设置属性。properties
我建议使用@value
注释:
application.properties:
myclass.attribute=value
myclass.attribute=foo
这样,MyClass
的每个实例都将具有属性
,默认值为foo
,我应该将其作为注释。但我不希望有人错过这件小事
好的,问题是-您缺少“$”(美元符号)。想知道为什么没人注意到
在属性文件中,如果您有以下内容:
myclass.attribute=value
然后,要在任何类中访问它,请执行以下操作:
@Value("${myclass.attribute}")
注意到上面的$符号了吗?您是否将@EnableConfigurationProperties
添加到了您的一个配置类中?是的@daniu,该符号在一个始终实例化的基本配置中启用了它们。只需添加@Value(“myclass.attribute”)
?同样的故事@dehasi,仍然获取空值。请尝试使用@propertySource(“classpath:application.properties”)和@value(“myclass.attribute”)到目前为止运气不佳,与以前的“nul”相同。我还尝试在使用变量的地方(在定义变量的类中)启动服务设置断点。@Data符号是什么?找不到包含它的包。它是用于用此批注替换getter和setter的lombok库。使用该批注时的情况相同,为null值。这也不起作用,仍然为null。我一定错过了一些冲突。