以添加一个媒体类型给日志记录为例
ygo.log.visible-content-type:application/test,application/test2

1、创建属性文件

/*** 日志属性配置** @author jacksony* @since 1.2.0*/
@Configuration
@ConfigurationProperties(prefix = "ygo.log")
public class LoggingProperties {/*** 可见的的contentType,多个以逗号分隔*/@Getter@Setterprivate String visibleContentType;
}

2、创建需要为bean的门面类

/*** 可见的contentType门面** @author jacksony* @since 1.0.2*/
public class VisibleContentTypeFacade {@Getter(AccessLevel.PRIVATE)private List<MediaType> mediaTypes;public VisibleContentTypeFacade(String visibleContentType) {mediaTypes = new ArrayList<>();mediaTypes.addAll(VisibleContentType.defaultMediaTypes());addMediaTypeFrom(visibleContentType);}private void addMediaTypeFrom(String visibleContentType) {if (SGStringUtils.isBlank(visibleContentType)) {return;}String[] visibleContentTypes = visibleContentType.split(",");for (String contentType : visibleContentTypes) {mediaTypes.add(MediaType.valueOf(contentType));}}/*** 判断request.contentType是否为允许的MediaType类型* 如果是get类型则没有contentType* 如果是单元测试可能走Exception分支** @param request http请求* @return true or false*/public boolean isContentTypeVisible(HttpServletRequest request) {try {if (request == null || request.getContentType() == null) {return true;}return isContentTypeVisible(MediaType.valueOf(request.getContentType()));} catch (Exception ex) {return false;}}/*** 判断contentType是否为允许的MediaType类型* 如果是get类型则没有contentType* 如果是单元测试可能走Exception分支** @param mediaType MediaType类型的contentType* @return true or false*/public boolean isContentTypeVisible(MediaType mediaType) {boolean visible = false;for (MediaType type : getMediaTypes()) {if (type.includes(mediaType)) {visible = true;}}return visible;}
}

3、创建配置文件
创建门面类VisibleContentTypeFacade 的bean

/*** 日志配置** @author jacksony* @since 1.2.0*/
@Configuration
public class LoggingConfiguration {/*** 可见ContentType门面类* @param loggingProperties 日志配置属性* @return 可见ContentType门面类*/@Beanpublic VisibleContentTypeFacade visibleContentTypeFacade(LoggingProperties loggingProperties) {return new VisibleContentTypeFacade(loggingProperties.getVisibleContentType());}
}

4、实际应用

@Autowired
public VisibleContentTypeFacade visibleContentTypeFacade;//函数里面调用
val mediaType = MediaType.valueOf(response.getContentType() == null ? MediaType.ALL_VALUE :response.getContentType());
boolean visible = visibleContentTypeFacade.isContentTypeVisible(mediaType);

SpringBoot-配置文件创建Bean的过程相关推荐

  1. aop springboot 传入参数_java相关:springboot配置aop切面日志打印过程解析

    java相关:springboot配置aop切面日志打印过程解析 发布于 2020-3-31| 复制链接 摘记: 这篇文章主要介绍了springboot配置aop切面日志打印过程解析,文中通过示例代码 ...

  2. SpringBoot配置@PropertySource、@ImportResource、@Bean注解

    引言 @ConfigurationProperties 与@Bean结合为属性赋值 与@PropertySource(只能用properties文件)结合读取指定文件 @Validation 支持使用 ...

  3. 创建bean的JAVA源文件_创建 JavaBean要经过编写代码、编译源文件、配置JavaBean这样一个过程。_学小易找答案...

    [多选题]网络广告效果测定指标包括(). [单选题]"文皆是从道中流出"是谁的观点() [填空题]创建 JavaBean的过程和编写Java类的过程基本相似,可以在任何Java的编 ...

  4. springboot配置shiro多项目实现session共享的详细步骤

    springboot配置shiro多项目实现session共享的详细步骤 公司需要这样的需求: 有两个项目master 主项目.suiteone 项目,两个项目各自由shiro 安全框架管理,当不能登 ...

  5. 菜鸟关于SpringBoot配置MinIo的一些疑惑问题的记录

    (本文章完全仅适合什么都不懂的小白阅读.......)在项目中运用到了MinIo,因为后台用了springboot,所以就搜索了关于springboot配置MinIo的一些博文(本人对于springb ...

  6. 通过Debug带你详细了解Spring创建Bean的过程,一清二楚!

    Spring流程Debug 1.1 Spring测试环境搭建 Spring模块概览,绿色是模块,Spring中八大模块,黑色表示该模块包含的jar包(组件).例如我们想要用IOC容器,也就是绿色的Co ...

  7. springboot配置文件属性大全

    springboot配置文件属性大全 1. application.yml参数 1. application.yml参数 #-------------------------------------- ...

  8. SpringBoot中对Bean的处理方法以及第三方Bean处理的方式

    我们可以通过Spring当中提供的注解@Component以及它的三个衍生注解(@Controller.@Service.@Repository)来声明IOC容器中的bean对象,为应用程序注入运行时 ...

  9. Java企业开发学习笔记(1.1)采用Spring配置文件管理Bean

    该文章主要为完成实训任务,详细实现过程及结果见[http://t.csdn.cn/iK3aM] 文章目录 1. 创建Maven项目 2. 添加Spring依赖 3. 创建杀龙任务 4. 创建勇士类 5 ...

  10. springboot配置Druid数据源

    springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...

最新文章

  1. 剑指offer:面试题04. 二维数组中的查找
  2. java 接口工程_Java工程师(15)抽象类与接口
  3. 17.04安装mysql_【17-04-11】 【求助】在线安装mysql时出现问题
  4. 彻底搞懂 Git-Rebase
  5. 胆战心惊形容什么_阿里员工感慨:加班累死累活,还胆战心惊,难道IT公司都这个样?...
  6. LeetCode 507. Perfect Number
  7. KB-Modal Dialog Mini FAQ[收藏]
  8. 3月1日见,魅族新品要来了!
  9. 刚刚,中国估值最高的AI公司一口气发布11款产品,横跨5大领域
  10. 二、Spring AOP 切面的定义
  11. python3 使用writerows写入csv时有多余空行的处理办法
  12. 普渡大学计算机科学和计算机工程,老师能讲一下普渡大学西拉法叶分校电气与计算机工程怎么样?...
  13. oracle聚合函数count,聚合函数count里面加条件
  14. 全网最新正则表达式总结- 简单 便捷 (适用于新手学习正则表达式,老手巩固学习正则表达式)
  15. Excel文件损坏打不开的常见原因及解决方法
  16. 王者荣耀android看不见iOS,王者荣耀转区功能来了!iOS和安卓这个限制,终于消失了...
  17. Android车载性能自动化测试Case设计
  18. linux 存储映射lun 给_LINUX系统下添加映射存储LUN
  19. 怎样开启SQL数据库服务
  20. 文本挖掘----基于OCR的文档关键字提取

热门文章

  1. 云计算,SDN,虚拟化三者关系
  2. pjsip代码分析(1)——modules框架
  3. win7_32下编译FFmpeg
  4. S3C2440时钟电源管理
  5. Linux内核多线程(四)
  6. python运行cmd命令和opencv搭建_Python环境搭建之OpenCV
  7. 使用curl与wget发送get与post请求
  8. python多进程_python学习笔记:多进程
  9. centos7 如何安装部署k8s_如何在CentOS 7上正确安装Chromium
  10. python中对象的定义_全面了解python中的类,对象,方法,属性