// 在element上查询annotationType类型注解 // 将查询出的多个annotationType类型注解属性合并到查询的第一个注解中 // # 多个相同注解合并 org.springframework.core.annotation.AnnotatedElementUtils#findMergedAnnotation(AnnotatedElement element, Class<A> annotationType)…
这篇博客的两个主题: spring的AnnotatedElementUtils 个人源码阅读方法论分享 为什么要分享AnnotatedElementUtils这个类呢,这个类看起来就是一个工具类,听起来很像apache的StringUtils,CollectionUtils. 原因是,它包含着spring对java注解的另类理解,和运用. java的是怎样支撑注解的? Class<TestAnnotation> clazz = TestAnnotation.class; // 获取类注解 My…
一.前言 spring为开发人员提供了两个搜索注解的工具类,分别是AnnotatedElementUtils和AnnotationUtils.在使用的时候,总是傻傻分不清,什么情况下使用哪一个.于是我做了如下的整理和总结. 二.AnnotationUtils官方解释 功能 用于处理注解,处理元注解,桥接方法(编译器为通用声明生成)以及超级方法(用于可选注解继承)的常规实用程序方法.请注意,JDK的内省工具本身并不提供此类的大多数功能.作为运行时保留注解的一般规则(例如,用于事务控制,授权或服务公…
org.springframework.web.method.ControllerAdviceBean#isApplicableToBeanType(@Nullable Class<?> beanType) 判断当前类是否被ControllerAdviceBean修饰,判断依据位 ControllerAdviceBean上设置的注解@ControllerAdvice内的参数 package org.springframework.web.bind.annotation; import java…
spring mvc是怎么实现的?为什么我们只需要在方法上写一个注解,就可以通过http访问这个接口?下面我们分3部分来解答这两个问题 注意:本文是基于spring4.3.2的 spring mvc整体流程 HandlerMapping HandlerAdapter spring mvc整体流程 我们通过看一下spring处理一个http请求的过程来大概了解下 Spring mvc的入口就是DispatcherServlet,请求交给这个servlet之后,通过调用doDispatch来分发这个…
上一节如何创建一个服务提供者provider已经启动了一个provider的server,提供用户信息查询接口.接下来,我们启动另一个provider,由于是同一台机器本地测试,我们换一个端口 --server.port=8084 通过启动传参数覆盖port.这样,我们就有两个provider实例了.接下来,可以使用我们consumer负载均衡的消费这两个provider. 升级eureka依赖 eureka之前的pom依赖过期了,需要修改为 spring-cloud-starter-netfl…
@ResponseStatus这个注解确实是个令我头疼的注解. 先记录下@ResponseStatus注解的定义. 记录几个得到的信息:@ResponseStatus声明在方法.类上, Spring3.0开始才有的, 三个属性其中 HttpStatus类型的  value  和 code是一个含义, 默认值就是 服务器 500错误的 HttpStatus. 用法一.标注在@RequestMapping方法上. @Controller @RequestMapping("/simple")…
RequestMappingHandlerMapping是SpringMvc中一个比较核心的类,查看下它的类结构图: InitializingBean是个很神奇的接口,在Spring每个容器的bean构造方法.属性设置之后,会先调用InitializingBean接口的afterPropertiesSet方法: RequestMappingHandlerMapping的afterPropertiesSet方法: 初始化了config对象,以及调用父类AbstractHandlerMethodMa…
1.Spring框架的搭建 这个很简单,只需要web容器中注册org.springframework.web.context.ContextLoaderListener,并指定spring加载配置文件,那么spring容器搭建完成.(当然org.springframework的核心jar包需要引入) 当然为了更加易用支持J2EE应用,一般我们还会加上如下: Spring监听HTTP请求事件:org.springframework.web.context.request.RequestContex…
事件及监听并不是SpringBoot的新功能,Spring框架早已提供了完善的事件监听机制,在Spring框架中实现事件监听的流程如下: 自定义事件,继承org.springframework.context.ApplicationEvent抽象类 定义事件监听器,实现org.springframework.context.ApplicationListener接口 在Spring容器中发布事件 实现自定义事件及监听 定义事件 //自定义事件 public class ApplicationEv…