springboot情操陶冶-web配置(九)】的更多相关文章

承接前文springboot情操陶冶-web配置(八),本文在前文的基础上深入了解下WebSecurity类的运作逻辑 WebSecurityConfigurerAdapter 在剖析WebSecurity的工作逻辑之前,先预热下springboot security推荐复写的抽象类WebSecurityConfigurerAdapter,观察下其是如何被实例化的,方便后续的深入理解 1.ApplicationContext环境设置 @Autowired public void setAppli…
参数校验通常是OpenApi必做的操作,其会对不合法的输入做统一的校验以防止恶意的请求.本文则对参数校验这方面作下简单的分析 spring.factories 读者应该对此文件加以深刻的印象,很多springboot整合第三方插件的方式均是从此配置文件去读取的,本文关注下检验方面的东西.在相应的文件搜索validation关键字,最终定位至ValidationAutoConfiguration类,笔者这就针对此类作主要的分析 ValidationAutoConfiguration 优先看下其头上…
承接前文springboot情操陶冶-web配置(三),本文将在DispatcherServlet应用的基础上谈下websocket的使用 websocket websocket的简单了解可见维基百科WebSocket,在笔者看来其大多数应用在web浏览器上用于与服务端的持续性通信,并大多用于接收服务器的推送内容 简单例子 spring很友好的向我们展示了如何在springboot上整合websocket,并给出了一个hello例子.读者可参照官方例子走一遍便可对websocket有一定的了解.…
承接前文springboot情操陶冶-web配置(一),在分析mvc的配置之前先了解下其默认的错误界面是如何显示的 404界面 springboot有个比较有趣的配置server.error.whitelabel.enabled,可用来管理404界面的显示方式,是简单的显示还是详细的显示. 指定为false的时候,则会简简单单的显示视图找不到的错误信息,如下 指定为true的时候(默认配置),则会显示前文样例中的错误信息,如下 源码层分析 springboot安排了ErrorMvcAutoCon…
承接前文springboot情操陶冶-web配置(二),本文将在前文的基础上分析下mvc的相关应用 MVC简单例子 直接编写一个Controller层的代码,返回格式为json package com.example.demo.web.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import…
承接前文springboot情操陶冶-@SpringBootApplication注解解析,在前文讲解的基础上依次看下web方面的相关配置 环境包依赖 在pom.xml文件中引入web依赖,炒鸡简单,如下 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency&…
本文关注应用的安全方面,涉及校验以及授权方面,以springboot自带的security板块作为讲解的内容 实例 建议用户可直接路由至博主的先前博客spring security整合cas方案.本文则针对相关的源码作下简单的分析,方便笔者以及读者更深入的了解spring的security板块 @EnableWebSecurity 这个注解很精髓,基本上可以作为security的入口,笔者贴一下它的源码 @Retention(value = java.lang.annotation.Retent…
本文则针对数据库的连接配置作下简单的分析,方便笔者理解以及后续的查阅 栗子当先 以我们经常用的mybatis数据库持久框架来操作mysql服务为例 环境依赖 1.JDK v1.8+ 2.springboot v2.0.3.RELEASE 3.mybatis v3.4.6 4.mysql v10.2.8-MarialDB 配置类步骤 1.pom.xml <!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot…
本文讲讲mvc的异常处理机制,方便查阅以及编写合理的异常响应方式 入口例子 很简单,根据之前的文章,我们只需要复写WebMvcConfigurer接口的异常添加方法即可,如下 1.创建简单的异常处理类,本例针对绑定异常 package com.example.demo.web.validation; import com.example.demo.web.model.ResEntity; import com.google.gson.Gson; import org.slf4j.Logger;…
承接前文springboot情操陶冶-@Configuration注解解析,本文将在前文的基础上对@SpringBootApplication注解作下简单的分析 @SpringBootApplication 该注解是springboot最集中的一个注解,也是应用最广泛的注解.官方也多用此注解以启动spring服务,我们看下其中的源码 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherit…
承接前文springboot情操陶冶-SpringApplication(一),本文将对run()方法作下详细的解析 SpringApplication#run() main函数经常调用的run()方法是我们分析的关键,先上源码 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableAppli…
承接前文springboot情操陶冶-@Configuration注解解析,本文将在前文的基础上阐述@ConfigurationProperties注解的使用 @ConfigurationProperties 此注解多用于对配置文件的加载以及映射对应值至相应的java属性中,样例如下 1.配置属性指定application.properties # user custom user.custom.username=demo_jing user.custom.nickname=nanco user…
承接前文springboot情操陶冶-@Configuration注解解析,本文将在前文的基础上阐述@AutoConfigureAfter和@Conditional注解的作用与解析 1.@Conditional 根据单词来理解,其就是条件的意思.在分析之前我们可以看下其内部源码 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interf…
承接前文springboot情操陶冶-SpringApplication(二),本文将在前文的基础上分析下@Configuration注解是如何一步一步被解析的 @Configuration 如果要了解与明白@SpringBootApplication的工作机制,必须了解@Configuration的注解应用.因为前者依赖后者,此处看下源码 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Com…
承接前文springboot情操陶冶-@Configuration注解解析,近期笔者接触的项目中有使用到了jmx的协议框架,遂在前文的基础上讲解下springboot中是如何整合jmx的 知识储备 JMX:Java Management Extension(Java管理应用扩展),这种机制可以方便的管理.监控正在运行的Java程序.常用于监控管理线程.内存.日志Level.服务重启.系统环境等等. 更多的知识点参考此篇文献:https://blog.csdn.net/u013256816/art…
前言:springboot由于其轻便和去配置化等的特性已经被广泛应用,基于时代潮流以及不被鄙视,笔者于是开辟此篇开始认识springboot 前话 springboot是基于spring而开发的轻量级框架,所以在学习springboot之前,务必对spring的工作模式和源码有一定的了解.笔者此处就不展开了,如果有兴趣可直接戳以下链接阅读即可 Spring源码情操陶冶-ContextLoaderListener springboot框架概览 具体更多的信息,可参考spring官网#springb…
SpringApplication是所有springboot的入口类,分析此类有助于我们了解springboot的工作机制.本文以2.0.3.REALEASE版本作分析 SpringApplication 调用实例如下 package com.example.demospringbootweb; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.Spri…
前言:本文不讲解FreeMarkerView视图的相关配置,其配置基本由FreeMarkerViewResolver实现,具体可参考>>>SpringMVC源码情操陶冶-ViewResolver视图解析 FreeMarker与springmvc的结合 以xml的bean方式展示如下 <!-- 视图配置 --> <bean id="viewResolver" class="org.springframework.web.servlet.vie…
本文承接前文Spring源码情操陶冶-自定义节点的解析,分析spring中的context:annotation-config节点如何被解析 源码概览 对BeanDefinitionParser接口的实现方法parse代码如下 @Override public BeanDefinition parse(Element element, ParserContext parserContext) { Object source = parserContext.extractSource(elemen…
本文针对spring配置的context:property-placeholder作下简单的分析,承接前文Spring源码情操陶冶-自定义节点的解析 spring配置文件应用 <context:property-placeholder location="classpath:context.properties"> PropertyPlaceholderBeanDefinitionParser-继承关系 配置文件解析类的继承关系如下 * AbstractBeanDefini…
重写全局配置 如果springboot提供的springmvc配置不符合要求,则可以通过一个配置类(标有@Configuration注解的类)加上@EnableWebMvc注解来实现完全自己控制的mvc配置 当你既想保留springboot提供的配置,又想增加自己额外的配置时,可以定义一个配置类并继承WebMvcConfigurationAdapter,无须使用@EnableWebMvc注解 servlet容器配置(servlet容器配置) 如果需要使用代码的方式配置servlet容器,则可以注…
接着前面几篇web处理请求的博文,本文将说明,当出现异常的场景下,如404请求url不存在,,403无权,500服务器异常时,我们可以如何处理 原文友链: SpringBoot系列教程web篇之404.500异常页面配置 I. 环境搭建 首先得搭建一个web应用才有可能继续后续的测试,借助SpringBoot搭建一个web应用属于比较简单的活; 创建一个maven项目,pom文件如下 <parent> <groupId>org.springframework.boot</gr…
前言:通过实例结合源码的方式解读,其中涉及到的文件来自于博主的Github毕设项目wxServer Note: Springboot应用不在本文章讨论范围 web.xml中启用Spring 在一般的web应用程序,我们倘若用到Spring的话,需要在web.xml中配置以下的信息来使一些容器,例如Tomcat.Jetty等来加载Spring <context-param> <param-name>contextConfigLocation</param-name> &l…
aop-Aspect Oriented Programming,面向切面编程.根据百度百科的解释,其通过预编译方式和运行期动态代理实现程序功能的一种技术.主要目的是为了程序间的解耦,常用于日志记录.事务管理等方面. spring中常用<aop-config>来配置aop代理 AOP概念梳理 切面(Aspect) 连接点(Joinpoint) 通知(Advice) 切入点(PointCut) 目标对象 AOP代理 具体的AOP解释以及用法可详情参考专业人士写的博客>>>Spri…
承接前文springcloud情操陶冶-springcloud context(二),本文将在前文基础上浅析下ConfigServer的工作原理 前话 根据前文得知,bootstrapContext引入了PropertySourceLocator接口供外部源加载配置,但作用是应用于子级ApplicationContext的环境变量Environment上,并不做更新维护操作. 具体的加载与维护更新外部源的配置信息,还是得有ConfigServer来完成,这也是本文分析的重点. 监听器 在这之前,…
承接前文Spring源码情操陶冶-AbstractApplicationContext#registerListeners 约定web.xml配置的contextClass为默认值XmlWebApplicationContext 直接源码AbstractRefreshableWebApplicationContext#finishBeanFactoryInitialization /** * Finish the initialization of this context's bean fac…
承接前文Spring源码情操陶冶-AbstractApplicationContext#onRefresh 约定web.xml配置的contextClass为默认值XmlWebApplicationContext 直接源码AbstractRefreshableWebApplicationContext#registerListeners /** * Add beans that implement ApplicationListener as listeners. * Doesn't affec…
承接前文Spring源码情操陶冶-AbstractApplicationContext#initApplicationEventMulticaster 约定web.xml配置的contextClass为默认值XmlWebApplicationContext 直接源码AbstractRefreshableWebApplicationContext#onRefresh /** * Initialize the theme capability. */ protected void onRefresh…
承接前文Spring源码情操陶冶-AbstractApplicationContext#initMessageSource 约定web.xml配置的contextClass为默认值XmlWebApplicationContext 瞧瞧官方注释 /** * Initialize the ApplicationEventMulticaster. * Uses SimpleApplicationEventMulticaster if none defined in the context. * @se…
承接前文Spring源码情操陶冶-AbstractApplicationContext#registerBeanPostProcessors 约定web.xml配置的contextClass为默认值XmlWebApplicationContext 瞧瞧官方注释 /** * Initialize the MessageSource. * Use parent's if none defined in this context. */ 初始化MessageSource消息源,如果beanFactor…