Spring的@Configuration @Bean注解

引言之前Spring 一直用的xml配置文件比较多,现在发现新公司用的注解比较多。也就是通过定义一个配置类(以@Configuration注解的类)内部在方法上注解 @Bean 注解来完成Bean的依赖注入Spring容器。用注解来配置的话,其实就是减少了配置文件的工作,但总体来说代码可读性其实是会下降的。不过也省去了一大堆的xml配置文件 直接看源码下面就从源码层面来看看 通过注解配置有什么不同 之前有分析过Spring对Bean的解析,是通过把我们配置的Bean信息抽象成了一个Bea...

阅读全文

MVC-HttpRequestHandler接口静态资源的关系

在Spring Mvc,一般我们都会配置对静态资源的拦截,因为静态资源处理有别与普通请求,需要进行特殊配置。 比较常用的配置有这几种 Tomcat defaultServelt 激活tomcat自带的defaultServelt 用来处理静态资源 123456789101112<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg<...

阅读全文

手写一个starter

引言前文说过,Spring Boot最大的优势在于自动配置,我么只需要引入一个个第三方提供的starter就可以快速集成第三方功能,既然starter这么方便,我们自己应该也可以写一个。 快速写一个starter 新建一个maven项目 123456789101112<groupId>com.walm</groupId> <artifactId>boot-test-starter</artifactId> <version...

阅读全文

SpringBoot的启动过程

引言在我之前写的文章中有详细分析过Spring的启动过程,如何大家有深入阅读过Spring Framework的核心源码,那么阅读Spring Boot的源码会比较轻松。个人觉得Spring Boot核心的东西比较少,其核心还是Spring Framework。 启动入口还是一步到位,直接看源码 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051publi...

阅读全文

MVC源码解析-HandlerAdapter

引言上篇文章分析了handerMapping的实现。本篇文章会继续分析和handerMapping相辅相成的handerAdapter。 什么是handerAdapter?在理解了handerMapping的基础上,我们应该发现了一个问题。就是每个handerMapping所匹配的到的hander实现是不一样的。比如RequestMappingHandlerMapping的hander的实现是一个HandlerMethod实现,而BeanNameUrlHandlerMapping的hand...

阅读全文

MVC源码解析-HandlerMapping

引言什么是Spring mvc 的 HanderMapping? **我们知道当一个http请求到服务器时,我们需要根据请求的上下文url来匹配到对应的处理类,而HanderMapping做的就是这个事情,它定义了我们的请求和对应的处理类的映射关系。 Spring mvc提供了多种HanderMapping类型,比较常用的有 RequestMappingHandlerMapping,BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping 以下是这...

阅读全文

分布式事务在积分商城里的应用

引言最近在做会员体系的时候,涉及到了积分商城订单体系,既然设计到订单体系,因为现在的项目架构体系基本都是微服务分布式的,所以必然会涉及到分布式事务。事务问题在早些时候都是单机部署的时代依靠数据库本身提供的事务机制非常容易解决,但是一旦设计到分布式,各个独立的服务是无法感知其他事务执行状态的,所以我们需要借助一些其他手段来保证分布式事务 分布式理论 CAP C(一致性)一致性是指数据的原子性,在经典的数据库中通过事务来保障,事务完成时,无论成功或回滚,数据都会处于一致的状态,在分布式环境下...

阅读全文

git 你真的会用吗

记录原由最近因为公司新来的同事,在使用Git时犯了一些非常低级的错误,导致团队为了解决这些问题浪费了很多时间。究其原因其实还是对于Git内部实现不清晰,仅仅知道敲几个git命令,但是却不知道敲了这个命令Git会发生什么!这里根据git官方文档节选了一些重要概念分享出来。 几个重要概念三种状态 工作区状态 就是修改了文件还没有做 git add的文件状态 暂存区状态 已经git add但还未git commit的文件状态 已提交状态 已经git commit的文件状态,也就是真正存储...

阅读全文

JAVA 泛型 你真的理解了吗?

记录原由之前虽然泛型一直在使用,但使用的过程中总是没有那么得心应手,有些细节还是过于模糊。究其原因其实是一直都没有系统深入的去理解过,最近花了一点时间去深入的理解了一下java的泛型机制,也希望借这次记录能够彻底的理解java的泛型 为什么要有泛型泛型的本质是把 类型参数化,什么是类型参数化?举个例子,我们常用的集合类,要是没有类型参数化的话,我们就得实现装不同类型的集合类,会大大降低代码的可重用性! 例如我们要设计一个装苹果的盘子和一个装香蕉的盘子,要怎么设计呢?非常简单,最简单的方式就...

阅读全文

Java字节码方法表

引言因为字段表和方法表的结构类似,所以我们直接分析Java字节码的方法表内容,理解了方法表,自然就理解了字段表 方法表方法表在Class文件中的位置是在字段表之后的,具体的结构我们根据下表再来回顾一下 类型 名称 数量 u2 access_flas 1 u2 name_index 1 u2 descriptor_index 1 u2 attributes_count 1 attribute_info 属性表 attributes_count 还是跟上...

阅读全文


Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2020 王俊男的技术杂谈 All Rights Reserved.

访客数 : | 访问量 :