SpringBoot-配置文件创建Bean的过程
以添加一个媒体类型给日志记录为例
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的过程相关推荐
- aop springboot 传入参数_java相关:springboot配置aop切面日志打印过程解析
java相关:springboot配置aop切面日志打印过程解析 发布于 2020-3-31| 复制链接 摘记: 这篇文章主要介绍了springboot配置aop切面日志打印过程解析,文中通过示例代码 ...
- SpringBoot配置@PropertySource、@ImportResource、@Bean注解
引言 @ConfigurationProperties 与@Bean结合为属性赋值 与@PropertySource(只能用properties文件)结合读取指定文件 @Validation 支持使用 ...
- 创建bean的JAVA源文件_创建 JavaBean要经过编写代码、编译源文件、配置JavaBean这样一个过程。_学小易找答案...
[多选题]网络广告效果测定指标包括(). [单选题]"文皆是从道中流出"是谁的观点() [填空题]创建 JavaBean的过程和编写Java类的过程基本相似,可以在任何Java的编 ...
- springboot配置shiro多项目实现session共享的详细步骤
springboot配置shiro多项目实现session共享的详细步骤 公司需要这样的需求: 有两个项目master 主项目.suiteone 项目,两个项目各自由shiro 安全框架管理,当不能登 ...
- 菜鸟关于SpringBoot配置MinIo的一些疑惑问题的记录
(本文章完全仅适合什么都不懂的小白阅读.......)在项目中运用到了MinIo,因为后台用了springboot,所以就搜索了关于springboot配置MinIo的一些博文(本人对于springb ...
- 通过Debug带你详细了解Spring创建Bean的过程,一清二楚!
Spring流程Debug 1.1 Spring测试环境搭建 Spring模块概览,绿色是模块,Spring中八大模块,黑色表示该模块包含的jar包(组件).例如我们想要用IOC容器,也就是绿色的Co ...
- springboot配置文件属性大全
springboot配置文件属性大全 1. application.yml参数 1. application.yml参数 #-------------------------------------- ...
- SpringBoot中对Bean的处理方法以及第三方Bean处理的方式
我们可以通过Spring当中提供的注解@Component以及它的三个衍生注解(@Controller.@Service.@Repository)来声明IOC容器中的bean对象,为应用程序注入运行时 ...
- Java企业开发学习笔记(1.1)采用Spring配置文件管理Bean
该文章主要为完成实训任务,详细实现过程及结果见[http://t.csdn.cn/iK3aM] 文章目录 1. 创建Maven项目 2. 添加Spring依赖 3. 创建杀龙任务 4. 创建勇士类 5 ...
- springboot配置Druid数据源
springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...
最新文章
- 剑指offer:面试题04. 二维数组中的查找
- java 接口工程_Java工程师(15)抽象类与接口
- 17.04安装mysql_【17-04-11】 【求助】在线安装mysql时出现问题
- 彻底搞懂 Git-Rebase
- 胆战心惊形容什么_阿里员工感慨:加班累死累活,还胆战心惊,难道IT公司都这个样?...
- LeetCode 507. Perfect Number
- KB-Modal Dialog Mini FAQ[收藏]
- 3月1日见,魅族新品要来了!
- 刚刚,中国估值最高的AI公司一口气发布11款产品,横跨5大领域
- 二、Spring AOP 切面的定义
- python3 使用writerows写入csv时有多余空行的处理办法
- 普渡大学计算机科学和计算机工程,老师能讲一下普渡大学西拉法叶分校电气与计算机工程怎么样?...
- oracle聚合函数count,聚合函数count里面加条件
- 全网最新正则表达式总结- 简单 便捷 (适用于新手学习正则表达式,老手巩固学习正则表达式)
- Excel文件损坏打不开的常见原因及解决方法
- 王者荣耀android看不见iOS,王者荣耀转区功能来了!iOS和安卓这个限制,终于消失了...
- Android车载性能自动化测试Case设计
- linux 存储映射lun 给_LINUX系统下添加映射存储LUN
- 怎样开启SQL数据库服务
- 文本挖掘----基于OCR的文档关键字提取
热门文章
- 云计算,SDN,虚拟化三者关系
- pjsip代码分析(1)——modules框架
- win7_32下编译FFmpeg
- S3C2440时钟电源管理
- Linux内核多线程(四)
- python运行cmd命令和opencv搭建_Python环境搭建之OpenCV
- 使用curl与wget发送get与post请求
- python多进程_python学习笔记:多进程
- centos7 如何安装部署k8s_如何在CentOS 7上正确安装Chromium
- python中对象的定义_全面了解python中的类,对象,方法,属性