java - Spring Boot中属性注入(inject)工作的充要条件是什么?

标签 java spring spring-boot properties-file

我有以下类(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/

相关文章:

java - eclipse 调用的命令来编译 Dynamic Web Project

java - Spring 数据和锁定

java - Springs XmlBeanFactory 已弃用

mysql - HIbernate 批量插入或更新在 Spring Boot 中不起作用

java - 在 spring security + spring boot 中禁用同一用户的多个登录

java - OpenJDK 17 Alpine 构建可用性

java - 找不到使用 ACTION_VIEW Intent 处理 Intent 的 Activity

java - Maven 无法获取依赖项

java - 在elasticsearch查询中配置搜索词的标记化

java - 在Springboot中测试JdbcTemplete.BatchUpdate方法