Spring
Gene Xu
个人博客:https://blog.xujun.pro;个人公众号:Sakura动漫ACG
展开
-
Spring -- 06 -- JDK动态代理和CGLIB动态代理的区别
一、相关概念1、JDK 动态代理原理使用拦截器 (需要实现 InvocationHandler 接口) 加上反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用 invoke() 方法来进行处理2、CGLIB 动态代理原理使用 ASM 字节码框架 (需要实现 MethodInterceptor 接口),加载代理对象类的 Class 文件,通过修改其字节码生成子类来进行处理3、什么时候使用 JDK 动态代理、CGLIB 动态代理?如果目标对象实现了接口,默认情况下会使用 JDK转载 2020-12-25 14:03:26 · 446 阅读 · 0 评论 -
Spring -- 05 -- @Configuration和@Component注解的区别
在日常的开发过程中,想必大家都使用过 @Configuration 和 @Component 这两个注解吧,两者都可以将标记的类注册成为 Spring 容器中的 Bean 对象,而它们之间又有什么区别呢?让我们一起来看看一、@Configuration 注解1、源码解析@Configuration 注解内部引用了 @Component 注解@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Com原创 2020-12-25 13:59:07 · 971 阅读 · 1 评论 -
Spring -- 04 -- ApplicationEvent和Listener的使用
ApplicationEvent 和 Listener 是 Spring 为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者模式,设计初衷在于对系统业务逻辑进行解耦,提高系统的可扩展性以及可维护性一、Spring 常见内置事件ApplicationContextEventApplicationContext 事件发布基类ContextStartedEventApplicationContext 启动时发布该事件ContextStoppedEventApplica原创 2020-12-25 13:55:36 · 875 阅读 · 1 评论 -
Spring -- 03 -- @AliasFor注解的使用
一、源码解析@AliasFor 注解主要用于为注解属性声明别名@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)@Documentedpublic @interface AliasFor { @AliasFor("attribute") String value() default ""; @AliasFor("value") String attribute() default ""; Class<原创 2020-12-06 20:34:51 · 816 阅读 · 0 评论 -
Spring -- 02 -- Validation校验注解解析
在日常与页面的联调中,我们会发现,尽管前端已经对请求参数做了校验,但有时候后端程序还是会报错,因此我们可以在后端再做一次校验,以确保数据的正确性,此时校验注解就派上了用场一、注解@Null字段必须为 null@NotNull字段不能为 null@NotBlank字段不能为 null,且去掉首尾空格后长度不能为 0只能作用于字符串@NotE...原创 2019-07-06 17:39:38 · 2261 阅读 · 0 评论 -
Spring -- 01 -- @Valid和@Validated注解的区别
在处理前端页面传来的参数的时候,我们通常会对数据进行校验,从而保证程序的稳定性,这时候我们就会用到 @Valid 和 @Validated 这两个注解,而这两个注解又可以相互替代使用,那么它们之间究竟有什么区别呢,让我们一起来看看一、区别所属包不同@Valid@Valid 位于 javax.validation 包下,是由 JDK 提供的@Validated@V...原创 2019-06-05 17:15:59 · 3097 阅读 · 0 评论