三、Spring Boot属性注入方式

目标使用@ConfigurationProperties实现配置文件配置项读取和应用
分析:
需求:将配置文件中的配置项读取到一个对象中;
实现:可以使用Spring Boot提供的注解@Configurationproperties,该注解可以将SpringBoot的配置文件(默认必须为.properties或.yml)中的配置项读取到一个对象中。
实现步骤:

1.创建配置项类JdbcProperties类,在该类名上添加 @ConfigurationProperties(使用该注解有可能出错

	需要加入以下依赖
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <!-- 不传递依赖-->
            <optional>true</optional>
        </dependency>

);

2.将jdbc.properties修改名称为application.properties;

	jdbc.driverClassName = com.mysql.jdbc.Driver
	jdbc.url = jdbc:mysql://localhost:3306/tables_mysql
	jdbc.username=dff
	jdbc.password=1234

3.将jdbcProperties对象注入到xmld;

注意:
ConfigurationProperties从application配置文件中读取配置项
prefix 表示 配置项的前缀
配置项类中的类变量名必须要与 前缀之后的配置项名称保持 松散绑定(相同)
Relaxed binding:松散绑定
a.不严格要求属性文件的属性名与成员变量一直。支持驼峰,中划线,下划线等等转换,甚至支持
对象引导。比如:user.friend.name:表示的是user对象中的friend属性中的name属性,显然
friend也是对象。@value注解难以完成这样的注入方式
b.meta-data support:元数据支持,帮助IDE生成属性提示(写开源框架会用到)

1.JdbcProperties.java

@ConfigurationProperties(prefix="jdbc")
public class JdbcProperties {
    String driverClassName;
    String url;
    String username;
    String password;

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUserName() {
        return username;
    }

    public void setUserName(String userName) {
        this.username = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

2.xmld.java

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)(使用JdbcProperties.class中的属性)
@ComponentScan("com.example.springaod.sdfe")
public class xmld {
    @Bean
    public DataSource dataSource(JdbcProperties jdbcProperties){
         DruidDataSource dataSource = new DruidDataSource();
         dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
         dataSource.setUrl(jdbcProperties.getUrl());
         dataSource.setUsername(jdbcProperties.getUserName());
         dataSource.setPassword(jdbcProperties.getPassword());
        return dataSource;
    }
}

3.更加简便的写法

之前的JdbcProperties还是需要只不过没有使用注解
jdbc.之后中的属性名必须与DruidDataSourcea()中set之后的名称相同第一个字母小写。

@Configuration
@ComponentScan("com.example.springaod.sdfe")
public class xmld {
	@Bean
    @ConfigurationProperties(prefix ="jdbc")
    public DataSource dataSource(){
        return new DruidDataSource();
    }

}
4.测试

小结

发布了10 篇原创文章 · 获赞 0 · 访问量 217

猜你喜欢

转载自blog.csdn.net/yunqiu21/article/details/103953470