• SpringBoot 自定义配置


    有时候需要自己定义一些配置,比如SpringBoot没有提供Druid连接池的配置,需要我们自己写配置。

    以在springboot中使用Druid为例。

    依赖

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.8</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.19</version>
            </dependency>

    配置文件

    #指定数据源类型为Druid
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    
    ##########druid连接池配置#########
    spring.datasource.druid.url=jdbc:mysql://127.0.0.1/db_xm_mall?serverTimezone=UTC
    spring.datasource.druid.driverClassName=com.mysql.cj.jdbc.Driver
    spring.datasource.druid.username=chy
    spring.datasource.druid.password=abcd
    ##初始连接数,默认0
    spring.datasource.druid.initialSize=10
    #最大连接数,默认8
    spring.datasource.druid.maxActive=30
    spring.datasource.druid.minIdle=10
    #获取连接的最大等待时间,单位毫秒
    spring.datasource.druid.maxWait=2000
    #缓存PreparedStatement,默认false
    #spring.datasource.druid.poolPreparedStatements=true
    #缓存PreparedStatement的最大数量,默认-1(不缓存)。大于0时会自动开启缓存PreparedStatement,所以可以省略上一句设置
    spring.datasource.druid.maxOpenPreparedStatements=20

    配置类

    /**
     * 初始化Druid连接池
     */
    @ConfigurationProperties("spring.datasource.druid")  //指定前缀
    @Component  //也可以使用@Configuration,@Configuration包含了@Component
    @Setter  //Lombok的注解。流程是调用空参构造器创建对象,再调用setter方法注入属性值,也可以使用@Data
    public class DruidConfig {
        //属性名要与springboot配置文件中属性名一致
        private String url;
        private String driverClassName;
        private String username;
        private String password;
        private int initialSize;
        private int maxActive;
        private int minIdle;
        private int maxWait;
        // private boolean poolPreparedStatements;
        private int maxOpenPreparedStatements;
    
        @Bean  //放到Spring容器中
        // @Primary  //声明为主数据源,如果配置了多个数据源,未显式指定使用哪个数据源时,自动使用主数据源
        public DataSource dataSource() {
            DruidDataSource datasource = new DruidDataSource();
    
            datasource.setUrl(url);
            datasource.setDriverClassName(driverClassName);
            datasource.setUsername(username);
            datasource.setPassword(password);
            datasource.setInitialSize(initialSize);
            datasource.setMaxActive(maxActive);
            datasource.setMinIdle(minIdle);
            datasource.setMaxWait(maxWait);
            // datasource.setPoolPreparedStatements(poolPreparedStatements);
            datasource.setMaxOpenPreparedStatements(maxOpenPreparedStatements);
    
            return datasource;
        }
    
    }

    三点:

    • 指定前缀。如果不需要指定前缀,可以省略这一步
    • 提供空参构造器、setter方法
    • @Component放到Spring容器中

    如果要写配置文件时有相应的提示,需要加一个依赖

            <!-- 自定义配置的提示 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>

    编译,target/classes/META-INF下会生成一个spring-configuration-metadata.json文件,在配置文件中写相关配置时就有提示啦(如果已存在该配置项,则不会提示)。

  • 相关阅读:
    获取指定日期相关DATENAME和DATEPART数据
    MySQL 5.7 新备份工具mysqlpump 使用说明
    Kubernetes之Pod控制器
    Python3出现"No module named 'MySQLdb'"问题-以及使用PyMySQL连接数据库
    分布式监控系统Zabbix3.4-针对MongoDB性能监控操作笔记
    基于MongodbDB的用户认证-运维笔记
    基于Nginx+Keepalived的LB服务监控(邮件报警)
    Linux系统用户密码规则
    通过容器提交镜像(docker commit)以及推送镜像(docker push)笔记
    Centos6.9下RocketMQ3.4.6高可用集群部署记录(双主双从+Nameserver+Console)
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12685833.html
Copyright © 2020-2023  润新知