SpringBoot读取配置文件方式

原文来源于:程序员恰恰

如有侵权,联系删除

介绍一下Springboot加载配置文件的几种方法!

首先介绍几个注解:

@Configuration:声明一个类作为配置类,代替xml文件
@Bean:声明在方法上,将方法的返回值加入Bean容器,代替<bean>标签
@value:属性注入
@PropertySource:指定外部属性文件。

接下来以读取数据库的配置文件为例介绍几种读取配置文件的方法。

方法一

1、jdbc.properties配置文件方法

在resources目录下,创建jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8
jdbc.username=root
jdbc.password=1234

2、在java目录下创建config目录,然后再创建JdbcConfig配置类

/*
@Configuration:声明一个类作为配置类,代替xml文件
@Bean:声明在方法上,将方法的返回值加入Bean容器,代替<bean>标签
@value:属性注入
@PropertySource:指定外部属性文件,
**/
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {

    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

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

编写测试类测试:

@RestController

public class MyController {
@Autowired

private DataSource dataSource;


@RequestMapping("/hello")
public String hello(){
System.out.println(dataSource);
return "hello spring boot123456789";
}
}

断点调试:可以看到已经读取到了数据源。

图片

方法二

上面的方法虽然能够读取配置文件,但是不够通用,不可能在每个用到数据源的代码中都写上上面的代码吧,接下来引入第二种方法。

在resources目录下application.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8
jdbc.username=root
jdbc.password=1234

编写与之对应的配置类,注意@ConfigurationProperties(prefix = "jdbc"),prefix指定配置文件的前缀“jdbc”,同时需要提供get/set方法,本例子中使用的是lombok的@data注解。

@ConfigurationProperties(prefix = "jdbc")//指定前缀
//提供getset方法
@Data
public class JdbcProperties {

    private String url;

    private String driver;

    private String username;

    private String password;

}

编写配置类:JdbcConfig,注解:通过@EnableConfigurationProperties(JdbcProperties.class),指定配置类。

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {


    @Autowired
    private JdbcProperties jdbcProperties;

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

编写测试类测试:可以看到已经OK了。

图片

注意:可以将@autowared自动注入方式换成,参数方式。

图片

方法三、属性直接注入

在resources目录下application.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8
jdbc.username=root
jdbc.password=1234

然后加上下面的这个配置类即可,其中@ConfigurationProperties(prefix = "jdbc"的注解可以直接读取配置文件文件的中信息。

@Configuration
public class JdbcConfig3 {
    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }
}

断点调试:可以看到已经读取到了数据源。

图片

方法四、Yaml文件

在resources目录下创建application.ymlwem文件。

jdbc:
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8
  username: root
  password: 1234
  arrayPros: 1,2,3,4 #数组
  listPros: #list
    - listvalue1
    - listvalue2
  mapPros: #map
    mapkey1: mapvalue1
    mapkey2: mapvalue2
  listMapPros:  #list<map>
    - listmap1key1: listmap1value1
      listmap1key2: listmap1value2
    - listmap2key1: listmap2value1
      listmap2key22: listmap2value2

spring:
  mvc:
    servlet:
      load-on-startup: 1
jdbc:
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8
  username: root
  password: 1234
  arrayPros: 1,2,3,4 #数组
  listPros: #list
    - listvalue1
    - listvalue2
  mapPros: #map
    mapkey1: mapvalue1
    mapkey2: mapvalue2
  listMapPros:  #list<map>
    - listmap1key1: listmap1value1
      listmap1key2: listmap1value2
    - listmap2key1: listmap2value1
      listmap2key22: listmap2value2

spring:
  mvc:
    servlet:
      load-on-startup: 1

创建与之对应的配置类。

@Component
@ConfigurationProperties(prefix = "jdbc")
@Data
public class MyProperties {
    private String url;

    private String driverClassName;

    private String username;

    private String password;

    private String[] arrayPros;

    private List<String> listPros;

    private Map<String,String> mapPros;

    private List<Map<String,String>> listMapPros;

}

编写测试类,已经读取到数据。

图片

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 提供了多种读取配置文件方式,以下是其中几种常用的方式: 1. application.properties/application.yml:在 src/main/resources 目录下创建 application.properties 或 application.yml 文件,可以在其中设置应用程序的配置信息,例如: ``` server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=123456 ``` 2. @Value 注解:在代码中使用 @Value 注解读取配置信息,例如: ``` @Value("${server.port}") private int serverPort; @Value("${spring.datasource.url}") private String dataSourceUrl; @Value("${spring.datasource.username}") private String dataSourceUsername; @Value("${spring.datasource.password}") private String dataSourcePassword; ``` 3. @ConfigurationProperties 注解:通过 @ConfigurationProperties 注解将配置文件中的属性值注入到 Bean 中,例如: ``` @ConfigurationProperties(prefix = "spring.datasource") public class DataSourceProperties { private String url; private String username; private String password; // getter/setter } ``` 4. Environment 接口:通过 Environment 接口读取配置信息,例如: ``` @Autowired private Environment env; int serverPort = env.getProperty("server.port", Integer.class); String dataSourceUrl = env.getProperty("spring.datasource.url"); String dataSourceUsername = env.getProperty("spring.datasource.username"); String dataSourcePassword = env.getProperty("spring.datasource.password"); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值