当前位置:   article > 正文

springboot属性注入的四种方式

springboot属性注入的四种方式


)


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>
  • 1
  • 2
  • 3
  • 4
  • 5

2.数据库配置

代码如下(示例):

jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
  • 1
  • 2
  • 3
  • 4

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;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

4.验证

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

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


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

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

1.自定义配置

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

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;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3.使用

@RestController
public class TestController{
	 @Autowired
    SpringConfig config;
    
    public void test() {
		System.out.println(config.getUrl());
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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
  • 1
  • 2
  • 3
  • 4

2.配置读取数据库信息

数据库配置文件:

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

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

读取数据库配置文件:


@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;
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

打印结果:

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

二、构造方法注入

二、使用步骤

1.写数据库配置

代码如下(示例):

jdbc.url=jdbc:mysql://localhost:3306/user_demo
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=root
  • 1
  • 2
  • 3
  • 4

2.配置读取数据库信息

数据库配置文件:

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

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

读取数据库配置文件:


@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;
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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
  • 1
  • 2
  • 3
  • 4

2.配置读取数据库信息

数据库配置文件:

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

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

读取数据库配置文件:

@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;
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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
  • 1
  • 2
  • 3
  • 4

2.配置读取数据库信息

数据库配置文件:

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

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

读取数据库配置文件:

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

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

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3打印结果:

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

总结

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

  1. @Autowired注入
  2. 构造方法注入
  3. @Bean方法形参注入
  4. 在@Bean方法上使用@ConfigurationProperties(prefix = “jdbc”) prefix 指定配置文件的前缀
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/90521
推荐阅读
相关标签
  

闽ICP备14008679号