美文网首页
代码编写时多重覆盖配置文件的方法

代码编写时多重覆盖配置文件的方法

作者: 不二不二熊 | 来源:发表于2019-09-28 22:16 被阅读0次

    一、起源

    很多时候,当我们在封装自己的框架的时候,一般都是会给使用者预留配置,这个时候配置文件就起作用了。一般而言我们在预留配置文件的时候都是采取三层覆盖的方式,即application配置文件覆盖实体类默认属性,用户配置覆盖application配置文件。

    二、展示

    • 第一种:application覆盖类属性
    public enum LoginType {
        /**
         * 返回视图
         */
        REDIRECT,
        /**
         * 返回json
         */
        JSON;
    
        LoginType() {
        }
    
    }
    
    @ConfigurationProperties(prefix = "customer.setting")
    @Data
    public class SettingProperties {
        /**
         * 默认返回json
         */
        private LoginType loginType = LoginType.JSON;
    }
    
    ##用户自定义跳转方式
    customer.setting.loginType=redirect
    

    如上面所展示的,如果用户没有配置loginType那么默认会使用json方式跳转,如果配置成了redirect那么则会变为视图跳转,这是很常见的。

    • 用户前端输入覆盖掉application配置
      那么,另外还有一种方式,如果当用户在前台传入请求的时候已经带上了参数设置,那么该参数设置则会覆盖掉application配置。
    @ConfigurationProperties(prefix = "com.imoc")
    @Data
    @Configuration
    public class UserConfigition {
        private MyUser user;
    }
    
    @Data
    public class MyUser  {
        /**
         * 用户自定义id
         */
        private int id;
    }
    
    ##自定义userid
    com.imoc.user.id = 15
    
    @RestController
    @RequestMapping("/servlet")
    public class ParmeatTest {
        @Autowired
        private UserConfigition userConfigition;
        /**
         * <一句话功能描述>:获取传入参数,如果没有的话则使用默认值
         * <功能详细描述>:
         * @Param:
         * @Return: int
         */
        @GetMapping("/parameterTest")
        public int getUesrId(){
            //从RequestContextHolder中获取request
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            //从request中获取参数userId
            int userId = ServletRequestUtils.getIntParameter(request, "userId", userConfigition.getUser().getId());
            return userId;
        }
    

    当我们发起请求(http://localhost:8080/servlet/parameterTest?userId=27)时,如果我们后面不带参数userId,那么返回的就是我们在配置文件时定义的值;如果我们携带了参数userId,那么我们userId的值就将变成27而非15,从而提高了可配置性。

    相关文章

      网友评论

          本文标题:代码编写时多重覆盖配置文件的方法

          本文链接:https://www.haomeiwen.com/subject/dmfeuctx.html