SpringBoot使用properties文件配置连接池的方式

SpringBoot配置连接池

准备:创建返回dataSource的方法,在类上添加注解@Configuration,表示这是个配置类,并且在方法上配置Bean注解,表示将返回的对象交给bean容器

@Configuration
public class DataSourceConfig {
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();

        return druidDataSource;
    }
}

方式一:使用db.propertoes,利用@Value("${jdbc.XX}")在dataSource中直接注入属性

1.创建db.properties

jdbc.driver=com.mysql.driver
jdbc.url=jdbc:mysql://localhost:3306/springBoot?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

2.在dataSource配置的类上贴上注解

@PropertySource(“classpath:db.properties”)
在类的内部就可以直接注入属性

@Configuration
@PropertySource("classpath:db.properties")
public class DataSourceConfig {
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
    @Value("${jdbc.url}")
    private String url;
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driver);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        druidDataSource.setUrl(url);
        return druidDataSource;
    }
}

这时其他类在使用datasource时,这里的dataSource里面的属性就已经是自动注入的了
问题:这样注入其他地方在想获取properties配置文件中的属性就很麻烦,这就可以使用方式二

方式二:使用对象封装的形式将配置文件的属性封装出来,其他类就可很方便的使用

2.1这种方式的前提是配置文件的名称必须为application.properties

jdbc.driver=com.mysql.driver
jdbc.url=jdbc:mysql://localhost:3306/springBoot?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

2.2此时需要封装一个对象来封装这些属性,这些对象必须有getter和setter方法,由于我已经引入lombok这里直接用了@Data
注意:这里引入配置文件的注解是@ConfigurationProperties,而且由于在配置文件中有前缀jdbc,所有必须指明前缀才可注入

package com.dongpo.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "jdbc")
@Data
public class JdbcBean {
    private String username;
    private String password;
    private String driver;
    private String url;
}

2.3 在需要使用这个封装好的这个Bean,必须在当前类加上
@EnableConfigurationProperties(JdbcBean.class),后面为封装的bean的字节码,这时才可以用@Autowaired来注入对象属性,或者在方法上加入JdbcBean jdbcBean;也就是对象类型的一个引用,这样Springboot会自动注入,前提类上必须有@EnableConfigurationProperties(JdbcBean.class)注解

@Configuration
@EnableConfigurationProperties(JdbcBean.class)
public class DataSourceConfig {
    @Autowired
    private JdbcBean jdbcBean;
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(jdbcBean.getDriver());
        druidDataSource.setUsername(jdbcBean.getUsername());
        druidDataSource.setPassword(jdbcBean.getPassword());
        druidDataSource.setUrl(jdbcBean.getUrl());
        return druidDataSource;
    }
}

或者

@Configuration
@EnableConfigurationProperties(JdbcBean.class)
public class DataSourceConfig {
    @Bean
    public DataSource dataSource(JdbcBean jdbcBean){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(jdbcBean.getDriver());
        druidDataSource.setUsername(jdbcBean.getUsername());
        druidDataSource.setPassword(jdbcBean.getPassword());
        druidDataSource.setUrl(jdbcBean.getUrl());
        return druidDataSource;
    }
}

方式三:当某一个配置是私有的,比如数据库配置,这里可以用直接属性注入的方式

如下,这里需要注意,配置问价中的名称必须和对象的属性一直不如driverClassName,在配置文件中必须是jdbc.driverClassName

@Configuration
public class DataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }
}
发布了47 篇原创文章 · 获赞 6 · 访问量 2220

猜你喜欢

转载自blog.csdn.net/weixin_44467251/article/details/101102414