springBoot的四种属性注入

本文详细介绍了在SpringBoot中如何使用@Autowired、构造函数、@Bean方法参数及@ConfigurationProperties注解进行配置文件属性的注入,包括创建属性读取类、配置数据源等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Autowired注入方式(以注入连接池为例

         1. 创建一个属性读取类:JdbcProperties 

复制代码

/**
 * 属性读取类
 *  prefix: 为application.properties文件中的前缀 
 */
@ConfigurationProperties(prefix = "jdbc")  //读取配置文件,声明一个类是读取配置类
public class JdbcProperties {
    private String driverClassName;  //配置文件中的属性名称
    private String url;
    private String username;
    private String password;
   
    //get、set方法
}

复制代码

             *  在类上通过@ConfigurationProperties注解声明当前类为属性读取类

             *  prefix="jdbc"读取属性文件中,前缀为jdbc的值。

             *  在类上定义各个属性,名称必须与属性文件中jdbc.后面部分一致,并且必须具有getter和setter方法

             * SpringBoot默认会读取文件名为application.properties的资源文件,所以配置文件名必须为application.properties

         2.创建另一个类JdbcConfiguration使用这个属性

              *  通过@EnableConfigurationProperties(JdbcProperties.class)来声明要使用JdbcProperties这个类的对象

              *  然后你可以通过以下方式在JdbcConfiguration类中注入JdbcProperties: 

                 1)  @Autowired注入                       

复制代码

@Configuration //声明一个类为Java配置类,相当于一个xml文件
@EnableConfigurationProperties(JdbcProperties.class)  //启用属性读取类
public class JdbcConfiguration {
    @Autowired
    private JdbcProperties jdbcProperties;  //注入读取类

    @Bean        //把方法返回值注入到spring容器
    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;
    }
}

复制代码

              2)构造函数注入

          

复制代码

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {

    private JdbcProperties jdbcProperties;

    public JdbcConfiguration(JdbcProperties jdbcProperties){
        this.jdbcProperties = jdbcProperties;
    }

    @Bean
    public DataSource dataSource() {
        // 略
    }

}

复制代码

           3)@Bean方法的参数注入          

复制代码

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {

    @Bean
    public DataSource dataSource(JdbcProperties jdbcProperties) {
        // ...
    }
}

复制代码

           4)把@ConfigurationProperties(prefix = "jdbc")声明在需要使用的@Bean的方法上,然后SpringBoot就会自动调用这个Bean(此处是DataSource)的set方法,然后完成注入。

               使用的前提是:该类必须有对应属性的set方法!

               

复制代码

@Configuration
public class JdbcConfiguration {
    
    @Bean
    // 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}

复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值