springboot属性注入的四种方式

本文介绍了SpringBoot中属性注入的四种方式:@Autowired注解注入,通过构造方法注入,以及在@Bean方法中利用@ConfigurationProperties进行注入。详细讲述了每种方式的步骤,包括数据库配置、读取配置文件并验证结果。适合希望深入理解SpringBoot配置管理的开发者阅读。

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


)


java配置

java配置主要靠java类和一些注解来达到和xml配置一样的效果,比较常用的注解有:

  • @Configuration : 声明一个类作为配置类,代替xml文件
  • @Bean:生命在方法上,将方法的返回值加入Bean容器,代替xml文件
  • @Value :属性注入
  • @PropertySource : 指定外部属性文件

概述

spring3.0以后 注解已经非常完善了,因此spring推荐大家使用java配置代替以前的xml,下面举例讲述如何使用java配置 去获取配置文件中的值,下面以读取jdbc的配置为例。


一、@Autowired注入

1).第一种,加入数据库依赖

代码如下(示例):

<dependency>
   <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.22</version>
</dependency>

2.数据库配置

代码如下(示例):

jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root

3.读取数据库配置 的值

代码如下(示例):

@Configuration
@PropertySource("classpath:jdbc.properties")//读取资源文件
public class JdbcConfiguration {

//    获取配置文件中的值
    @Value("${jdbc.url}")
   private  String url;
    @Value("${jdbc.driverClassName}")
    private  String driverClassName;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean  //把方法的返回值 注入到spring容器
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(this.driverClassName);
        druidDataSource.setUrl(this.url);
        druidDataSource.setUsername(this.username);
        druidDataSource.setPassword(this.password);
        return druidDataSource;
    }

4.验证

代码如下(最终读取成功):

在这里插入图片描述
以上是读取数据库配置的示例,大家学会了吗


如果没有看懂接下来再看第二个示例

2)第二种,使用步骤再列举个场景: 调用第三方时,把url地址配置到文件中去,用java+注解的方式获取配置文件的值

1.自定义配置

normal.url=http://192.168.123.252:8080/

2.读取配置文件

@Component
@PropertySource(value = {"classpath:application-dev.properties"} , ignoreResourceNotFound = true)
public  class SpringConfig {
	
	@Value("${normal.url}")
	private String url;

	public String getUrl() {
		return url;
	}

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

3.使用

@RestController
public class TestController{
	 @Autowired
    SpringConfig config;
    
    public void test() {
		System.out.println(config.getUrl());
	}
}

4 打印结果

  • http://192.168.123.252:8080/

3)、第三种,使用步骤

1.写数据库配置

代码如下(示例):

jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root

2.配置读取数据库信息

数据库配置文件:

@Data
@ConfigurationProperties(prefix = "jdbc")//获取jdbc前缀的配置信息
public class JdbcProperties {
    private String driverClassName;
    private  String url;
    private String username;
    private String password;

}

读取数据库配置文件:


@Configuration
@EnableConfigurationProperties(JdbcProperties.class) //启用配置文件
public class JdbcConfiguration {

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

}

打印结果:

  • 最后通过 @Autowired注入DataSource 获取到数据库配置信息/
  • 在这里插入图片描述

二、构造方法注入

二、使用步骤

1.写数据库配置

代码如下(示例):

jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root

2.配置读取数据库信息

数据库配置文件:

@Data
@ConfigurationProperties(prefix = "jdbc")//获取jdbc前缀的配置信息
public class JdbcProperties {
    private String driverClassName;
    private  String url;
    private String username;
    private String password;

}

读取数据库配置文件:


@Configuration
@EnableConfigurationProperties(JdbcProperties.class) //启用配置文件
public class JdbcConfiguration {

    @Autowired
    JdbcProperties jdbcProperties;
    //构造方法
    public JdbcConfiguration(JdbcProperties jdbcProperties) {
        this.jdbcProperties=jdbcProperties;
    }
    
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(jdbcProperties.getDriverClassName());
        druidDataSource.setUrl(jdbcProperties.getUrl());
        druidDataSource.setUsername(jdbcProperties.getUsername());
        druidDataSource.setPassword(jdbcProperties.getPassword());
        return druidDataSource;
    }

}

3打印结果:

  • 最后通过 @Autowired注入DataSource 获取到数据库配置信息/
  • 在这里插入图片描述

三@Bean方法形参注入

二、使用步骤

1.写数据库配置

代码如下(示例):

jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root

2.配置读取数据库信息

数据库配置文件:

@Data
@ConfigurationProperties(prefix = "jdbc")//获取jdbc前缀的配置信息
public class JdbcProperties {
    private String driverClassName;
    private  String url;
    private String username;
    private String password;

}

读取数据库配置文件:

@Configuration
@EnableConfigurationProperties(JdbcProperties.class) //启用配置文件
public class JdbcConfiguration {
//方法的形参方式注入
    @Bean
    public DataSource dataSource(JdbcProperties jdbcProperties){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(jdbcProperties.getDriverClassName());
        druidDataSource.setUrl(jdbcProperties.getUrl());
        druidDataSource.setUsername(jdbcProperties.getUsername());
        druidDataSource.setPassword(jdbcProperties.getPassword());
        return druidDataSource;
    }

}

3打印结果:

  • 最后通过 @Autowired注入DataSource 获取到数据库配置信息/
  • 在这里插入图片描述

# 四、在@Bean方法上使用@ConfigurationProperties(prefix = “jdbc”) prefix 指定配置文件的前缀

二、使用步骤

1.写数据库配置

代码如下(示例):

jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root

2.配置读取数据库信息

数据库配置文件:

@Data
@ConfigurationProperties(prefix = "jdbc")//获取jdbc前缀的配置信息
public class JdbcProperties {
    private String driverClassName;
    private  String url;
    private String username;
    private String password;

}

读取数据库配置文件:

@Configuration
@EnableConfigurationProperties(JdbcProperties.class) //启用配置文件
public class JdbcConfiguration {

    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource(JdbcProperties jdbcProperties){
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }

}

3打印结果:

  • 最后通过 @Autowired注入DataSource 获取到数据库配置信息/
  • 在这里插入图片描述

总结

以上就是今天要讲的内容,简单介绍了获取配置文件信息的四种方式:

  1. @Autowired注入
  2. 构造方法注入
  3. @Bean方法形参注入
  4. 在@Bean方法上使用@ConfigurationProperties(prefix = “jdbc”) prefix 指定配置文件的前缀
在Spring Boot中,属性注入可以通过不同的方式实现。一种常见的方式是使用`@ConfigurationProperties`注解。通过将该注解应用于一个类上,可以将`application.properties`或`application.yml`文件中定义的属性注入到Java类中。这种注入是通过Java类属性的setter方法进行的。 另外一种方式是通过在`@Bean`方法上使用`@ConfigurationProperties`注解。在这种情况下,Spring Boot会自动调用该`@Bean`方法,并将相关属性通过setter方法注入到对应的Bean中。需要注意的是,被注入属性的类必须具有对应属性的setter方法。 为了观察被注入属性,你可以通过访问`http://localhost:8080/source/show`来查看。这个URL将展示被注入属性信息。另外,还可以使用`@ConfigurationProperties`注解进行批量注入属性,以方便地注入多个属性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringBoot属性注入](https://blog.csdn.net/Nicholas_GUB/article/details/120997989)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [SpringBoot 属性注入](https://blog.csdn.net/2301_77025309/article/details/130994152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值