SpringBoot常用配置属性注解
Springboot 常用属性注解如下:
注解名 | 功能 |
---|---|
ConfigurationProperties | 用于class属性自动绑定 |
EnableConfigurationProperties | 扫描指定ConfigurationProperties类,主要是为解决自己开发的AutoConfiguration或者条件注解 |
ConfigurationPropertiesScan | 扫描指定包下的ConfigurationProperties |
ConfigurationPropertiesBinding | 用于属性绑定转换,用于注解在spring GenericConverter |
NestedConfigurationProperty | 用于内嵌ConfigurationProperties |
ConditionalOnProperty | 属性条件装配 |
EnableConfigurationProperties
官方使用比如:KafkaAutoConfiguration、EnvironmentEndpointAutoConfiguration、HealthEndpointAutoConfiguration、WebEndpointAutoConfiguration等,具体可以见spring-boot-autoconfigure。
demo 实现一个spring-boot-starter
- MyCustomAutoConfiguration 自动装配类实现 MyCustomBean 条件装配
如果不添加@EnableConfigurationProperties或者@ConfigurationPropertiesScan 或者Spring Component 相关注解,会提示报错,“Not registered via @EnableConfigurationProperties, marked as Spring component, or scanned via @ConfigurationPropertiesScan”
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConditionalOnProperty(prefix = "my.properties", name = "enable")
@EnableConfigurationProperties(value = MyProperties.class)
@ConfigurationPropertiesScan
public class MyCustomAutoConfiguration {
@Bean
public MyCustomBean myCustomBean(MyProperties properties) {
System.out.println("myCustomBean init");
System.out.println(properties);
return new MyCustomBean("bearboy80");
}
}
- MyCustomBean
@AllArgsConstructor
public class MyCustomBean {
private String name;
}
- MyProperties配置
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
@Getter
@Setter
@ConfigurationProperties(prefix = "my.properties")
public class MyProperties {
private String id;
private String name;
}