springboot中@ConfigurationProperties注解和@EnableConfigurationProperties配合使用获取配置文件属性,封装到bean

@ConfigurationProperties注解和@EnableConfigurationProperties配合使用
1.配置文件:
    smartodn:
        debug:
            debug: ${smartodn.debug.debug}
            isSkipBak: ${smartodn.debug.isSkipBak}

2.获取配置文件属性,封装到bean
    package smartodn.platform.foundation.debug;

    import org.springframework.boot.context.properties.ConfigurationProperties;

    @ConfigurationProperties(prefix = "smartodn.debug")    //这里表示获取到springboot配置文件中前缀为smartodn.debug的属性并装配这个bean
    public class DebugProperties {

        /**
         * 是否开启调试模式
         */
        private boolean debug = false;

        /**
         * 是否跳过备份
         */
        private boolean skipBak = false;

        /**
         * 默认的调试信息
         */
        private String projectCode = "";
        private String userInfo = "";
        private String language = "en-US";

        /**
         * Gets the value of debug.
         *
         * @return the value of debug
         */
        public boolean isDebug() {
            return debug;
        }

        /**
         * Sets the debug.
         *
         * @param debug debug
         */
        public void setDebug(boolean debug) {
            this.debug = debug;
        }

        /**
         * Gets the value of skipBak.
         *
         * @return the value of skipBak
         */
        public boolean isSkipBak() {
            return skipBak;
        }

        /**
         * Sets the skipBak.
         *
         * @param skipBak skipBak
         */
        public void setSkipBak(boolean skipBak) {
            this.skipBak = skipBak;
        }

        /**
         * Gets the value of projectCode.
         *
         * @return the value of projectCode
         */
        public String getProjectCode() {
            return projectCode;
        }

        /**
         * Sets the projectCode.
         *
         * @param projectCode projectCode
         */
        public void setProjectCode(String projectCode) {
            this.projectCode = projectCode;
        }

        /**
         * Gets the value of userInfo.
         *
         * @return the value of userInfo
         */
        public String getUserInfo() {
            return userInfo;
        }

        /**
         * Sets the userInfo.
         *
         * @param userInfo userInfo
         */
        public void setUserInfo(String userInfo) {
            this.userInfo = userInfo;
        }

        /**
         * Gets the value of language.
         *
         * @return the value of language
         */
        public String getLanguage() {
            return language;
        }

        /**
         * Sets the language.
         *
         * @param language language
         */
        public void setLanguage(String language) {
            this.language = language;
        }
    }
    
3.让这个类被springboot容器管理,使用到注解:@EnableConfigurationProperties

    /**
     * 基本信息过滤器
     *
     * @author jWX562483
     */
    @EnableConfigurationProperties(DebugProperties.class)    //让上面的DebugProperties类被springboot容器管理
    @WebFilter(filterName = "InstanceFilter", urlPatterns = "/*")
    @Component
    public class InstanceFilter extends OncePerRequestFilter {

        private static final Logger logger = LogManager.getLogger(InstanceFilter.class);

        @Autowired
        private DebugProperties debugProperties;

        @Override
        protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
                throws ServletException, IOException {
            if (debugProperties.isDebug()) {
                HttpInfoUtils.setLanguage(debugProperties.getLanguage());
                HttpInfoUtils.setProjectCode(debugProperties.getProjectCode());
                HttpInfoUtils.setUser(JSON.parseObject(debugProperties.getUserInfo(), User.class));
            } else {
                try {
                    HttpInfoUtils.parseAndSetLanguage();
                } catch (Exception e) {
                    logger.info(e.getMessage());
                }

                try {
                    HttpInfoUtils.parseAndSetProjectCode();
                } catch (Exception e) {
                    logger.info(e.getMessage());
                }

                try {
                    HttpInfoUtils.parseAndSetUserInfo();
                } catch (Exception e) {
                    logger.info(e.getMessage());
                }
            }

            filterChain.doFilter(request, response);
        }
    }

    
    
    
    

猜你喜欢

转载自www.cnblogs.com/liuxuelin/p/10183964.html