SpringBoot全局配置文件(二)

2021/11/18 23:14:57

本文主要是介绍SpringBoot全局配置文件(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

        我们可以在application.properties文件中定义Spring Boot项目的相关属性,当然,这些相关属性可以是系统属性、环境变量、命令参数等信息,也可以是自定义配置文件名称和位置,接下来就演示一下自定一配置属性,这里拿自定义数据库信息举例

1. 使用@Value()注解完成属性注入

    (1)首先引入数据源连接依赖

<dependency>
    <groupId>com.github.drtrang</groupId>
    <artifactId>druid-spring-boot2-starter</artifactId>
    <version>1.1.10</version>
</dependency>

      (2) 编写application.yml

jdbc:
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/demo
  username: root
  password: root

    (3) 创建数据源实体类

@Data
@Configuration
public class JdbcConfiguration {
    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.driverClassName}")
    String driverClassName;
    @Value("${jdbc.username}")
    String username;
    @Value("${jdbc.password}")
    String password;

    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

  (4) 测试数据

 可以清楚看出通过@Value()注解获得了配置文件中的值

2.使用@ConfigurationProperties批量注入

  (1)修改数据源实体类

@Data
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "jdbc")
public class JdbcConfiguration {

    private String url;

    private String driverClassName;

    private String username;

    private String password;

    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

  @Configuration :表示这个类是一个配置累

  @EnableConfigurationProperties :使@ConfigurationProperties注解生效

  @ConfigurationProperties(prefix = "jdbc")  :将配置文件中以jdbc开头的属性值通过 setXX()方法注入到实体类对应属性中

   为了在开发中编写自定义的属性时有提示,为了出现代码提示的效果来方便配置, 在使用@ConfigurationProperties注解进行配置文件属性值注入时,可以在pom.xml文件中添加一个Spring Boot提供的配置处理器依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

  (2)编写yml配置文件

jdbc:
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/demo
  username: root
  password: root

  (3)查看效果

  查看效果说明通过@ ConfigurationProperties也可以实现属性注入的操作,而且支持批量注入,不用每一个属性上都操作了。

3.注入第三方配置

  (1)创建一个其他组件类(这里当作为第三方的类)

@Data
public class User {

    private String userName;

    private String pwd;
}

  (2)创建给文件的配置类

@Configuration
public class MyUserConfiguration {


    @ConfigurationProperties(prefix = "user")
    @Bean
    public User user(){
        return new User();
    }
}

  (3)编写配置文件

user:
  userName: zs
  pwd: 123

  (4)编写测试

@SpringBootTest
class DemoApplicationTests {
    
    @Autowired
    private User user;

    @Test
    void test() {
        System.out.println(user);
    }
}

  (5)查看效果

4.松散绑定

Spring Boot使用一些宽松的规则将环境属性绑定到@ConfigurationProperties bean,因此环境属性名 和bean属性名之间不需要完全匹配

比如上面那个案例,我们修改配置文件

user:
  user_name: zs
  pwd: 123

查看效果

 发现也是可以绑定成功的。

使用@ConfigurationProperties绑定时支持的松散绑定方式有

羊肉串模式case, 推荐使用:user.user-name

标准驼峰模式:user.userName

下划线模式:user.user_name

大写下划线,如果使用系统环境时候推荐使用 : USER_USER_NAME

总结:

@Configuration:声明一个类作为配置类 @Bean:声明在方法上,将方法的返回值加入Bean容器

@Value:属性注入

@ConfigurationProperties(prefix = "jdbc"):批量属性注入 

@PropertySource("classpath:/jdbc.properties")指定外部属性文件。在类上添加



这篇关于SpringBoot全局配置文件(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程