4.springBoot(属性注入)获取配置的几种方式

将配置文件里的配置注入到java代码中,这里主要介绍2种属性注入的方式:

方式1:@Component和@ConfigurationProperties注解实现。

方式2:@ConfigurationProperties + @EnableConfigurationProperties注解实现。

1.引入依赖

<!-- 核心启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

1.读取到java对象中,可以用@Component和@ConfigurationProperties注解实现

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

2) 新建一个类,用来进行属性绑定并注入:

@Component
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
    private String url;
    private String driverClassName;
    private String username;
    private String password;
   
    // get和 set
}
@RestController
public class UserController {

    @Autowired
    JdbcProperties jdbcProperties;

//方法,引用入口
   xx(){
System.out.println(jdbcProperties);

    }
}

2.@ConfigurationProperties + @EnableConfigurationProperties注解实现

1)导入数据源maven坐标

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.6</version>
</dependency>

2)新建一个类,用来进行属性注入:

@ConfigurationProperties(prefix = "jdbc")
public class DataSourceProperties {
    private String url;
    private String driverClassName;
    private String username;
    private String password;
    // get set
}

2)在DataSourceConfig中使用这个DataSourceProperties属性读取类对象:

@Configuration
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceConfig {
    /**
     * 通过bean注解实例化DataSource对象
     * @param properties
     * @return
     */
    @Bean
    public DataSource dataSource(DataSourceProperties properties) {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUsername(properties.getUserName());
        druidDataSource.setDriverClassName(properties.getDriverClassName());
        druidDataSource.setUrl(properties.getUrl());
        druidDataSource.setPassword(properties.getPassword());
        return druidDataSource;
    }
}

 

posted @ 2021-11-17 18:36  shadow321  阅读(221)  评论(0编辑  收藏  举报