美文网首页工作生活
使用springboot 的方式实现属性注入

使用springboot 的方式实现属性注入

作者: 二十_f15f | 来源:发表于2019-07-02 08:55 被阅读0次

    通过一个数据源注入的方式实现

    1.导入依赖

    首先在pom.xml中,引入Druid连接池依赖:

    <dependency>
        <groupId>com.github.drtrang</groupId>
        <artifactId>druid-spring-boot2-starter</artifactId>
        <version>1.1.10</version>
    </dependency>
    

    2.在application.properties 文件中编写相关配置信息

    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://127.0.0.1:3306/数据库名称
    jdbc.username=root
    jdbc.password=root
    

    3.创建一个数据源信息的实体类

    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    @Data
    @ConfigurationProperties(prefix = "jdbc")
    public class JdbcProperties {
        private String url;
        private String driverClassName;
        private String username;
        private String password;
    }
    
    • 在类上通过@ConfigurationProperties注解声明当前类为属性读取类
    • prefix="jdbc"读取属性文件中,前缀为jdbc的值。
    • 在类上定义各个属性,名称必须与属性文件中jdbc.后面部分一致,并且必须具有getter和setter方法
    • 需要注意的是,这里我们并没有指定属性文件的地址,SpringBoot默认会读取文件名为application.properties的资源文件。

    4.新建JdbcConfig配置类

    import com.alibaba.druid.pool.DruidDataSource;
    import com.wj.leyou.springboot.pojo.JdbcProperties;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import javax.sql.DataSource;
    
    @Configuration
    @EnableConfigurationProperties(JdbcProperties.class)
    public class JdbcConfig {
        @Bean
        public DataSource dataSource(JdbcProperties jdbcProperties) {
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setUrl(jdbcProperties.getUrl());
            dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
            dataSource.setUsername(jdbcProperties.getUsername());
            dataSource.setPassword(jdbcProperties.getPassword());
            return dataSource;
        }
    }
    

    5.总结

    这种方式看似更加复杂事实上这种方式有更强大的功能,也是SpringBoot推荐的注入方式。和@Value对比

    1527695636167.png
    优势:
    • Relaxed binding:松散绑定
      • 不严格要求属性文件中的属性名与成员变量名一致。支持驼峰,中划线,下划线等等转换,甚至支持对象引导。比如:user.friend.name:代表的是user对象中的friend属性中的name属性,显然friend也是对象。@value注解就难以完成这样的注入方式。
      • meta-data support:元数据支持,帮助IDE生成属性提示(写开源框架会用到)。

    相关文章

      网友评论

        本文标题:使用springboot 的方式实现属性注入

        本文链接:https://www.haomeiwen.com/subject/evyacctx.html