Spring配置连接数据库与SpringBoot配置连接数据库(四种属性注入方式)

 

Spring配置连接数据库与SpringBoot配置连接数据库(四种属性注入方式)

Spring配置连接数据库

设置jdbc.properties

创建配置类

SpringBoot配置连接数据库

设置application.properties

创建配置类-JdbcProperties

创建配置类-JdbcConfiguration

SpringBoot的四种属性注入方式

Debug方式启动,以上几种方式都能给 DruidDataSource赋值。


Spring配置连接数据库

设置jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/SSM
jdbc.username=root
jdbc.password=root

创建配置类

/**
 * @Author: Promsing
 * @Date: 2021/5/30 - 14:52
 * @Description:连接数据库的配置类
 * @version: 1.0
 */
@Configuration//声明该类是一个java配置类,相当于一个xml配置文件
@PropertySource("classpath:jdbc.properties") //读取资源文件
public class JdbcConfiguration {

    @Value("${jdbc.driverClassName}")
    private String driverClassName;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Bean //将返回值注入到IOC容器中
    public DataSource dataSource(){
        DruidDataSource dataSource=new DruidDataSource();
        //设置连接数据库的四大参数
        dataSource.setDriverClassName(this.driverClassName);
        dataSource.setUrl(this.url);
        dataSource.setUsername(this.username);
        dataSource.setPassword(this.password);
        return dataSource;
    }

}

SpringBoot配置连接数据库

设置application.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/SSM
jdbc.username=root
jdbc.password=root

创建配置类-JdbcProperties

/**
 * @Author: Promsing
 * @Date: 2021/5/30 - 15:41
 * @Description: 封装了读取出来的配置文件
 * @version: 1.0
 */
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {

    private String driverClassName;

    private String url;

    private String username;

    private String password;

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

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

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

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

    public String getDriverClassName() {
        return driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }
}

创建配置类-JdbcConfiguration

/**
 * @Author: Promsing
 * @Date: 2021/5/30 - 14:52
 * @Description: 连接数据库的Java配置类
 * @version: 1.0
 */
@Configuration//声明该类是一个java配置类,相当于一个西xml配置文件
@EnableConfigurationProperties(JdbcProperties.class) //加载JDBC的配置类
public class JdbcConfiguration {


    @Autowired
    private JdbcProperties jdbcProperties;

    //方式一
    @Bean //将返回值注入到IOC容器中
    public DataSource dataSource(){
        DruidDataSource dataSource=new DruidDataSource();
        //设置连接数据库的四大参数
        dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());
        dataSource.setUrl(this.jdbcProperties.getUrl());
        dataSource.setUsername(this.jdbcProperties.getUsername());
        dataSource.setPassword(this.jdbcProperties.getPassword());
        return dataSource;
    }
    
      /*
        //方式二:最优雅最简单--直接换掉方式一
        @Bean //将返回值注入到IOC容器中
        @ConfigurationProperties(prefix = "jdbc")
        public DataSource dataSource(){
            DruidDataSource dataSource=new DruidDataSource();
        return dataSource;
        }
    * */

    /*
        //方式三通过构造函数注入--在方式一上的方式修改
        public JdbcConfiguration(JdbcProperties jdbcProperties) {
            this.jdbcProperties = jdbcProperties;
        }
    * */
    
    /*
        //方式四通过方法的参数注入--直接换掉方式一
        public DataSource dataSource(dbcProperties jdbcProperties){
             DruidDataSource dataSource=new DruidDataSource();
            //设置连接数据库的四大参数
            dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
            dataSource.setUrl(jdbcProperties.getUrl());
            dataSource.setUsername(jdbcProperties.getUsername());
            dataSource.setPassword(jdbcProperties.getPassword());
            return dataSource;
//    }
    * */
    
    
}

SpringBoot的四种属性注入方式

1. Autowired注入

2.直接在@Bean方法中使用@ConfigurationProperties(prefix = "jdbc")

3.构造函数主语

4.@Bean方法形参注入

需要注意的是配置文件中的名称要与 JdbcProperties中的属性名称要一致。项目开发过程中第二种最优雅最简洁,但是我们最常用的还是第一种,这一种更符合我们的开发习惯,书写习惯。

Debug方式启动,以上几种方式都能给 DruidDataSource赋值。

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

### 回答1: Spring Boot是一个用于创建独立的、生产级别的Spring应用程序的框架,它可以帮助我们快速搭建和配置应用程序。在使用Spring Boot时,我们通常需要配置数据库连接以便应用程序能够与数据库进行交互。 在Spring Boot中,我们可以使用属性文件(如application.properties或application.yml)来配置数据库连接信息。我们可以在属性文件中提供数据库的相关配置,如数据库的URL、用户名、密码等。然后,Spring Boot会自动读取这些配置并将其应用在应用程序的数据源中。 除了静态配置外,Spring Boot还提供了动态配置数据库方式。我们可以使用@ConfigurationProperties注解将数据库连接的配置属性注入到一个单独的Java类中。通过在这个类中定义与属性文件中相同的字段,并使用注解@RequestParam或@Value将属性映射到字段上,可以在运行时动态修改数据库连接配置。 一旦我们使用@ConfigurationProperties将数据库连接的配置属性注入到Java类中,我们还可以使用@EnableConfigurationProperties注解将这个Java类声明为配置类。然后,我们可以在应用程序的其他地方使用@Autowired将这个配置注入到其他组件中,并使用其中的属性值来配置数据源。 通过动态配置数据库,我们可以实现在应用程序运行过程中动态修改和管理数据库连接的功能。这对于需要经常切换数据库环境或根据环境变量动态配置数据库的应用程序非常有用。 总之,Spring Boot提供了灵活的方式配置和管理数据库连接。我们可以使用属性文件来静态配置数据库连接,也可以使用@ConfigurationProperties来动态配置数据库连接。这使得我们可以在应用程序运行时根据需要动态修改和管理数据库连接。 ### 回答2: Spring Boot是一个开源的Java开发框架,它简化了Spring框架的配置和开发过程。在Spring Boot中,数据库动态配置是指在不修改代码的情况下,可以在不同环境下使用不同的数据库配置Spring Boot提供了几种方法来实现数据库动态配置。首先,可以使用application.properties或application.yml文件来配置数据库连接信息。这些文件可以根据不同的环境进行配置,例如开发环境、测试环境和生产环境。通过在配置文件中指定不同的数据源配置,可以实现在不同的环境中使用不同的数据库。 其次,Spring Boot提供了Profiles功能,可以根据不同的Profiles加载不同的配置。可以通过在配置文件中指定spring.profiles.active属性来激活不同的Profile,从而加载不同的数据库配置。例如,可以在开发环境中使用H2数据库,在生产环境中使用MySQL数据库。 另外,Spring Boot还提供了@ConfigurationProperties注解,可以将配置文件中的属性值映射到Java对象中。通过在Java对象中定义与配置文件中属性相对应的属性变量,可以动态获取配置文件中的数据库连接信息。这样,可以通过修改配置文件中的属性值来改变数据库配置,而不需要修改代码。 总的来说,Spring Boot提供了丰富的功能和灵活的配置方式,可以实现数据库的动态配置。通过配置文件、Profiles和@ConfigurationProperties注解,可以根据不同的环境和需求,灵活地切换和配置数据库连接信息,从而提高应用程序的可移植性和可扩展性。
评论 65
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小张自由—>张有博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值