SpringBoot 属性注入

本文详细介绍了SpringBoot中四种属性注入的方法:@Autowired注解注入、构造函数注入、@Bean方法参数注入以及直接在@Bean上使用@ConfigurationProperties。每种方式都配合代码示例进行了演示,包括如何从application.properties文件中读取配置并注入到DataSourcebean。文章强调SpringBoot推荐使用第三种注入方式,即通过@Bean方法的参数注入。

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


前言

SpringBoot 属性注入


提示:以下是本篇文章正文内容,下面案例可供参考

一、注入方式

第一种:@Autowired注入

@Autowired
private JdbcProperties prop;

第二种:构造函数注入

private JdbcProperties prop;
public JdbcConfig(Jdbcproperties prop){
  this.prop = prop;
}

第三种:@Bean的方法参数注入

@Bean
public Datasource dataSource(JdbcProperties prop){
  // ...
}

第四种:直接在@Bean方式上使用@ConfigurationProperties(prefix = "jdbc")

Springboot会自动调用这个Bean(使用的前提是:该类必须有对应属性的set方法!JdbcProperties.class)
@Configuration
public class JdbcConfig {
 
  @Bean
  // 声明要注入的属性前缀,Spring Boot会自动把相关属性通过set方法注入到DataSource中
  @ConfigurationProperties(prefix = "jdbc")
  public DataSource dataSource() {
    return new DruidDataSource();
 }
}

Spring Boot推荐第三种注入方式

二、(第一种)@Autowired注入

0.创建application.properties

代码如下(示例):

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/springboot
jdbc.username=root
jdbc.password=root

1.创建JdbcProperties

代码如下(示例):

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

}

2.创建JdbcConfiguration

代码如下(示例):

/**
 * Autowired注入方式
 * SpringBoot的第三种属性注入方式——通过@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;
    }
}

3.创建JdbcAutowController

代码如下(示例):

/**
 * @Autowired 注入方式
 */
@RestController
@RequestMapping("autow")
public class JdbcAutowController {

    @Autowired
    private DataSource dataSource;

    /**
     *
     * 打上断点,测试查看dataSource。
     * @return
     * @throws SQLException
     */
    @GetMapping("/info")
    public String info() throws SQLException {
        System.out.println("dataSource = " + dataSource);
        return "请求成功!";
    }
}

断点,测试查看dataSource

三、(第二种)构造函数注入

0.创建目录

代码如下(示例):

1.创建JdbcProperties

代码如下(示例):

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

}

2.创建JdbcStrucConfiguration

代码如下(示例):

/**
 * 构造函数注入
 * SpringBoot的第二种属性注入方式——通过构造方法注入
 */
@Configuration //声明一个类为Java配置类,相当于一个xml文件  
@EnableConfigurationProperties(JdbcProperties.class)  //启用属性读取类
public class JdbcStrucConfiguration {

    private JdbcProperties jdbcProperties;

    //构造函数注入
    public JdbcStrucConfiguration(JdbcProperties jdbcProperties){
        this.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;
    }
}

3.创建JdbcStrucController

代码如下(示例):

/**
 * 构造函数注入
 * SpringBoot的第二种属性注入方式——通过构造方法注入
 */
@RestController
@RequestMapping("struc")
public class JdbcStrucController {
    @Autowired
    private DataSource dataSource;

    /**
     *
     * 打上断点,用引导类启动项目,测试查看dataSource。
     * @return
     * @throws SQLException
     */
    @GetMapping("/info")
    public String info() throws SQLException {
        System.out.println("dataSource = " + dataSource);
        return "请求成功!";
    }
}

四、(第三种)@Bean的方法参数注入

0.创建目录

代码如下(示例):

1.创建JdbcProperties

代码如下(示例):

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

}

2.创建JdbcBeanConfiguration

代码如下(示例):

/**
 * @Bean方法的参数注入
 * SpringBoot的第三种属性注入方式——通过Bean方法的形参注入
 */
@Configuration  
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcBeanConfiguration {

    @Bean
    public DataSource dataSource(JdbcProperties jdbcProperties) {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
        dataSource.setUrl(jdbcProperties.getUrl());
        dataSource.setUsername(jdbcProperties.getUsername());
        dataSource.setPassword(jdbcProperties.getPassword());
        return dataSource;
    }
}

3.创建JdbcBeanController

代码如下(示例):

/**
 * @Bean 注入方式
 */
@RestController
@RequestMapping("bean")
public class JdbcBeanController {

    @Autowired
    private DataSource dataSource;

    /**
     *
     * 打上断点,用引导类启动项目,测试查看dataSource。
     * @return
     * @throws SQLException
     */
    @GetMapping("/info")
    public String info() throws SQLException {
        System.out.println("dataSource = " + dataSource);
        return "请求成功!";
    }
}

五、(第四种)@Bean方式上使用@ConfigurationProperties(prefix = "jdbc")

0.创建目录

代码如下(示例):

1.创建JdbcProperties

代码如下(示例):

/**
 * 属性读取类
 *  prefix: 为application.properties文件中的前缀
 */
@Data
public class JdbcProperties {
    private String driverClassName;  //配置文件中的属性名称
    private String url;
    private String username;
    private String password;

}

2.创建JdbcBeanConProConfiguration

代码如下(示例):

/**
 *
 * SpringBoot的第四种属性注入方式——直接在@Bean方式上使用@ConfigurationProperties(prefix = "jdbc")
 *
 * @EnableConfigurationProperties(JdbcProperties.class)可以直接作用在需要使用@Bean的方法上,
 * Springboot会自动调用这个Bean(使用的前提是:该类必须有对应属性的set方法!JdbcProperties.class)
 *
 */
@Configuration //声明一个类为Java配置类,相当于一个xml文件 【测试时 打开】
public class JdbcBeanConProConfiguration {
    @Bean  //把方法的返回值注入到spring容器,然后在任何地方都可以使用了
    @ConfigurationProperties(prefix = "jdbc")  //读取配置文件,声明一个类是读取配置类  
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}

2.创建JdbcBeanConaProController

代码如下(示例):

/**
 * 直接在@Bean方式上使用@ConfigurationProperties(prefix = "jdbc")
 */
@RestController
@RequestMapping("beanConaPro")
public class JdbcBeanConaProController {

    @Autowired
    private DataSource dataSource;

    /**
     *
     * 打上断点,用引导类启动项目,测试查看dataSource。
     * @return
     * @throws SQLException
     */
    @GetMapping("/info")
    public String info() throws SQLException {
        System.out.println("dataSource = " + dataSource);
        return "请求成功!";
    }
}


总结

以上就是要讲的内容,SpringBoot的属性注入方式.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值