自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 Filter和Interceptor的联系和区别

前文《Filter简述和@Filter注解使用》主要对过滤器Filter进行了简单的说明,本文将对拦截器Interceptor进行简单讲解,并通过几个例子对它们的差异进行简要分析。拦截器Interceptor简介一个应用中可以定义多个拦截器,spring在项目启动时,会将这些拦截器注册进来,并按照默认规则进行排序。如果是自定义的拦截器,可手动设置拦截器调用的先后顺序。各拦截器是链式调用,一个请求可以触发多个拦截器,每个拦截器的调用会按照它加载到spring中的顺序依次执行。拦截器中有3个方法

2022-01-13 00:15:45 426

原创 Filter简述和@Filter注解使用

Filter主要用于对用户请求进行预处理,也可以对请求的响应结果进行后续处理。它与Servlet的区别在于,不能直接向用户生成响应结果。Filter的执行流程用户发送请求,Filter首先拦截用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应结果进行后续处理。Filter主要功能(1)根据需要可以检查并修改HttpServletRequest请求头和请求数据。(2)根据需要可以检查并修改HttpServletResponse响应头和响应数据

2022-01-10 23:56:43 2305

原创 spring如何扫描@Autowired、@Value、@Resource

前面文章@Autowired与@Resource区别主要对这两个注解的差异及使用方式进行了一个总结,本文将从源码分析被@Autowired、@Value和@Resource这三个注解修饰的属性和方法是如何被spring扫描到的。其实负责扫描这三个注解的类是spring中的一种后置处理器BeanPostProcessor。其中,AutowiredAnnotationBeanPostProcessor负责扫描@Autowired和@Value这两个注解;CommonAnnotationBeanPostPro

2022-01-09 21:54:35 710

原创 @AliasFor注解

顾名思义,@AliasFor表示别名,它可以添加到自定义注解的两个属性上,表示这两个属性互为别名。也就是说,这两个属性其实是同一个含义。通常所有注解都会有一个属性value,在使用注解时,如果给value进行赋值,默认可以将value省略,如:@RequestMapping(value="name") 就可以写成 @RequestMapping("name") 。自定义注解若自定义注解已有一个属性,但是我们想要定义一个能够描述业务的属性,就可以使用@AliasFor与之前已有的属性互为别名。如下

2022-01-08 23:34:05 1171 1

原创 彻底弄懂@Controller 、@Service、@Component

今天主要聊聊@Controller 、@Service和@Component这三个注解的关系和区别。网上很多人对这三个注解进行了详细的解释,但是仅仅局限于理论,个人对于没有经过自己验证的结果总是持怀疑态度,所有花时间研究了一下,也对这三个注解理解的更加透彻。(ps:网上好多回答不一定正确,所以只能自己花时间验证)附上三个注解的源代码:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Indexed

2022-01-08 00:43:54 5800 1

原创 JVM初始化阶段简述

1<clinit>()方法JVM初始化阶段就是执行类变量构造器方法<clinit>()的过程,对准备阶段产生的默认零值进行赋值。此方法无需定义,是由javac编译器自动收集类中的所有类变量的赋值动作和静态代码块,并将其进行合并。只有被static修饰并且赋值的静态属性才会产生<clinit>()方法,不管是直接赋值还是在静态块中赋值,最后都会被合并成一个<clinit>()方法,并按照代码中的顺序依次赋值。publ...

2022-01-06 23:31:10 564

原创 Initializer的三种定义方式

在SpringBoot中采用了大量的Initializer和Listener,本文主要讲解Initializer的三种定义方式。方式一:通过扫描配置文件application.yml进行注入自定义初始化类MyInitializer,该类实现了接口ApplicationContextInitializer,同时在项目的配置文件中定义该类的全路径。当项目启动时,会扫描该配置文件完成类的初始化并进行调用。public class MyInitializer imple...

2022-01-06 23:26:38 882

原创 new String()会创建几个对象

问题一:new String("ab")会创建几个对象?会创建2个对象:对象1:new关键字在堆空间中创建的String。 对象2:字符串常量池中的对象“ab”。public void test1(){ String str = new String("ab");}字节码如下: 0 new #2 <java/lang/String> // 创建String(对象1) 3 dup // 复制引用地址 4 ldc #3 <...

2022-01-06 23:22:50 2426

原创 @PostConstruct注解详解

初始化方式一:@PostConstruct注解假设类UserController有个成员变量UserService被@Autowired修饰,那么UserService的注入是在UserController的构造方法之后执行的。如果想在UserController对象生成时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入的对象,那么就无法在构造函数中实现(ps:spring启动时初始化异常),例如:public class UserController...

2022-01-06 23:20:24 43357 3

原创 @Autowired与@Resource区别

每当问到@Autowired和@Resource有什么区别时,我们总会不假思索的答到:@Autowired是按照类型注入,@Resource是按照名称注入。这种说法不能说错,只能说答的不全面,那要如何使自己的回答让人眼前一亮呢,且听我慢慢道来。@Autowired@Autowired默认按照类型byType注入,如果按照类型注入时,匹配到多个结果,就会按照名称byName注入(ps:所以@Autowired也可以按照名称注入哟)。当@Autowired通过byName进行注入时,会获取属性的na

2022-01-06 23:18:05 354

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除