我有以下类(class):
@ConfigurationProperties
public class Database {
...
@Value("${database.driver-class-name}")
public void setDriverClassName(String driverClassName) {
...
}
在 build.gradle
中具有以下依赖项:
dependencies {
compile('org.springframework.boot:spring-boot-starter-jdbc')
compile('org.springframework.boot:spring-boot-configuration-processor')
在application.properties
中有以下行:
database.driver-class-name=com.mysql.jdbc.Driver
在测试类上有以下注释:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(DatabaseTest.Context.class)
@EnableConfigurationProperties
public class DatabaseTest {
@Configuration
public static class Context {
@Bean
public Database database() {
Database ans = new Database();
return ans;
}
}
@Autowired
public Database database;
它仍然既不从属性文件注入(inject)属性,也不发出一些错误消息。
它还想要什么?
从属性文件注入(inject)属性的必要和充分条件是什么?
UDPATE
示例存储库:https://github.com/dims12/MinimalRequrementsToInjectPropertiesFromFile
最佳答案
类上的@configurationProperties
应该有@Bean
或@Component
注释,以便spring注入(inject)属性值。有关属性的更多信息可以找到here
@ConfigurationProperties
@Component // or @Bean
public class Database {
关于java - Spring Boot中属性注入(inject)工作的充要条件是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36199056/