欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring-boot配置文件部分2------自定义配置文件和使用

程序员文章站 2022-03-02 19:00:25
...

方式一:通过参数形式指定配置文件

可以通过spring.config.name 修改默认的配置文件名称,不需要指定扩展名。比如:
$ java -jar myproject.jar --spring.config.name=myproject

可以通过spring.config.location指定配置文件,需要全路径与文件名,可指定多个,比如:
$ java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

可以通过spring.config.location指定配置文件的位置,比如:
$ java -jar myproject.jar --spring.config.additional-location=classpath:/custom-config/,file:./custom-config/

方式二:通过注解指定配置文件

Spring Boot可使用注解的方式将自定义的properties文件映射到实体bean中

1springboot读取properties配置文件

    connection.username=admin
    connection.password=kyjufskifas2jsfs
    connection.remoteAddress=192.168.1.1


2建立对应bean

    @Configuration
    @ConfigurationProperties(prefix = "connection")
    @PropertySource("classpath:/connection.properties")
    public class ConnectionSettings {

        private String username;
        private String remoteAddress;
        private String password ;

        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getRemoteAddress() {
            return remoteAddress;
        }
        public void setRemoteAddress(String remoteAddress) {
            this.remoteAddress = remoteAddress;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }

    }


我们还可以把@ConfigurationProperties还可以直接定义在@bean的注解上

    @Bean
    @ConfigurationProperties(prefix = "connection")
    public ConnectionSettings connectionSettings(){
        return new ConnectionSettings();

    }


3.具体使用 

    @Autowired 
    ConnectionSettings conn;
    
    @RequestMapping(value = {"/",""})
    public String hellTask(){
        String userName = conn.getUsername();     
        return "hello task !!";
    }


4.如果发现@ConfigurationPropertie不生效,有可能是项目的目录结构问题,可以通过@EnableConfigurationProperties(ConnectionSettings.class)来明确指定需要用哪个实体类来装载配置信息

    @Configuration
    @EnableConfigurationProperties(ConnectionSettings.class)
     public class MailConfiguration { 
        @Autowired private MailProperties mailProperties; 
           @Bean public JavaMailSender javaMailSender() {
          // omitted for readability
        }
     }