zoukankan      html  css  js  c++  java
  • spring boot 使用@ConfigurationProperties

    有时候有这样子的情景,我们想把配置文件的信息,读取并自动封装成实体类,这样子,我们在代码里面使用就轻松方便多了,这时候,我们就可以使用@ConfigurationProperties,它可以把同类的配置信息自动封装成实体类

    首先在配置文件里面,这些信息是这样子滴

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

    这时候我们可以定义一个实体类在装载配置文件信息

    @Component
    @ConfigurationProperties(prefix="connection")
    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实体类就不用@Component和@ConfigurationProperties了

    @SpringBootApplication
    public class DemoApplication{
    
        //...
    
        @Bean
        @ConfigurationProperties(prefix = "connection")
        public ConnectionSettings connectionSettings(){
            return new ConnectionSettings();
    
        }
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }

    然后我们需要使用的时候就直接这样子注入

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

    如果发现@ConfigurationPropertie不生效,有可能是项目的目录结构问题,

    你可以通过@EnableConfigurationProperties(ConnectionSettings.class)来明确指定需要用哪个实体类来装载配置信息

    @Configuration
    @EnableConfigurationProperties(ConnectionSettings.class)
     public class MailConfiguration { 
        @Autowired private MailProperties mailProperties; 
    
        @Bean public JavaMailSender javaMailSender() {
          // omitted for readability
        }
     }
  • 相关阅读:
    CF1051F The Shortest Statement 题解
    CF819B Mister B and PR Shifts 题解
    HDU3686 Traffic Real Time Query System 题解
    HDU 5969 最大的位或 题解
    P3295 萌萌哒 题解
    BZOJ1854 连续攻击游戏 题解
    使用Python编写的对拍程序
    CF796C Bank Hacking 题解
    BZOJ2200 道路与航线 题解
    USACO07NOV Cow Relays G 题解
  • 原文地址:https://www.cnblogs.com/liaojie970/p/8043150.html
Copyright © 2011-2022 走看看