Spring配置类注解相关应用

相关应用

简单应用

@Configuration 被该注解标记的类,会被Spring容器进行管理
@ConfigurationProperties 会将外部配置文件的属性绑定到Java对象的属性

@SpringBootApplication
public class SimpleApplication {
    public static void main(String[] args) {
        SpringApplication.run(SimpleApplication.class, args);
    }
}


@Configuration
@ConfigurationProperties(prefix = "app")
public class AppProperties {
    private String name;
    // getters and setters
}

中等规模,多个配置类

这样会自动扫描 com.example.config 包下所有带有 @ConfigurationProperties 注解的类并注册为Bean

@SpringBootApplication
@ConfigurationPropertiesScan("com.example.config")
public class MediumApplication {
    public static void main(String[] args) {
        SpringApplication.run(MediumApplication.class, args);
    }
}

// 配置类无需@Component
@ConfigurationProperties(prefix = "database")
public class DatabaseProperties {
    private String url;
    private String username;
    // getters and setters
}

开发starter

为什么使用 spring.factories ? 让用户自动发现加载你的配置,无需额外配置。

// 在starter中
@Configuration
@EnableConfigurationProperties(DatabaseProperties.class)
@ConditionalOnClass(DataSource.class)
@ConditionalOnProperty(name = "dynamic-endpoint.enabled", havingValue = "true", matchIfMissing = false)
public class DatabaseAutoConfiguration {
    
    @Bean
    @ConditionalOnMissingBean
    public DataSource dataSource(DatabaseProperties properties) {
        return new HikariDataSource();
    }
}

// spring.factories文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.starter.DatabaseAutoConfiguration

个人总结

  1. 日常项目中,增加一个配置类,使用 @Configuration @ConfigurationProperties(prefix = "app")
  2. 当一个项目中存在一个config文件夹,并且不想在每个类中都添加 @Configuration 注解,使用 @ConfigurationProperties(prefix = "app") + @ConfigurationPropertiesScan
  3. 当你需要开发一个starter时候,首先定义需要创建并编写 spring.factories (SpringBoot2.7之前),在自动配置类上增加 @Configuration 的注解,如果该类需要依赖其他配置类时,使用 @EnableConfigurationProperties(DatabaseProperties.class)进行注册激活bean。当然你也可以添加 @ConditionalOnClass 等注解,实现更灵活的逻辑。
posted @ 2025-08-06 21:11  帅气的涛啊  阅读(6)  评论(0)    收藏  举报